#include
#include
char* DelCharFromString(char *str, int len, int pos);
void main()
{
char str[100];
int pos; //删除位置
int len; //字符串长度
printf("请输入一个字符串:\n");
scanf("%s", str);
len = strlen(str);
printf("请输入要删除字符的位置:(0~%d)", len-1);
scanf("%d", &pos);
printf("str = %s\n", DelCharFromString(str, len, pos));
}
char* DelCharFromString(char *str, int len, int pos)
{
int i;
char *tmp = str;
if(pos <0 || pos >= len)
{
printf("要删除的位置不存在,什么字符都不删除。\n");
return str;
}
for(i=0; i{
if(i >= pos)
{
*tmp = *(tmp+1);
}
tmp++;
}
*tmp = '\0';
return str;
}
你的代码存在以下问题1、str长度不够,如果将str当字符串处理的话(由printf以字符串格式化输出就知道你把str当字符串来处理),一定要有结束符'\0',也就是str数组长度至少为8;2、在删除函数中,没有考虑越界问题,当i为n-1时,p[i+1]为p[n],肯定越界了,再一个,别忘了在这里移动字符后补'\0',比如把student的最后一个t往前移后,要把当前的t给替换成'\0'
#include
#include
using namespace std;
int main()
{
char str[100];
int mark,i;
cin>>str;
cin>>mark;//这里的指定位置用mark表示了!要是不对可以改。
str[mark-1]=0;//字符串是从0开始的,所以这里mark-1。
for(i=mark;str[i];i++)
{
str[i-1]=str[i];
}
str[i-1]=0;
cout<
}
void fn(char* s,int i)
{
if (strlen(s)
}
void main()
{
char s[11]="123456789";
fn(s,5);
cout< cin.get ();
}