数组移动的问题,代码如下:
#include <stdio.h>
void fun(char a[],char c)
{
int i = 0, j = 0;
while (a[i] != '\0')
{
if (a[i] != c)
a[j++] = a[i];
i++;
}
a[j] = 0;
}
int main()
{
char a[1002], c;
gets(a);
c = getchar();
fun(a,c);
printf("%s", a);
return 0;
}
将不是被删除的字符移动到字符串开头就行
#include <stdio.h>
int main()
{
char s[10001] = {0},c;
int i=0,j=0;
gets(s); //接收字符串
c = getchar(); //接收需要删除的字符
printf("%s\n",s);
while(s[i] != '\0') //遍历字符串所有字符
{
if(s[i] != c) //如果不是被删除字符,则将该字符移动到字符串开头文字,j表示写入位置下标,从0开始,每写入一个字符,下标值加1
s[j++] = s[i];
i++;
}
s[j] = '\0'; //最后将字符串结束符写入非被删除字符的尾部即可
printf("%s\n",s);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!