|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void main()
{
char str[80],i,a;
void han(char str[],char a);
gets(str);
printf("请输入要去除的字符:\n");
scanf("%c",&a);
han(str,a);
printf("%s",str);
}
void han(char str[],char a)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=a)
str[j++]=str[i];
//str[j]='\0';
}
请问上述代码中我注释掉的那一句是什么作用?我试了一下加还有不加,好像没区别啊
本帖最后由 风过无痕1989 于 2020-12-21 09:38 编辑
1、在函数中查找到待删除字符后,后面的就会前移(即相当于删除动作),遍历完数组后,如果不添加 str[j]='\0',给查找完成的数组一个结束符,那么系统就会认定执行删除前的结束符,用 printf("%s",str) 输出,就等于是删除动作白做了;除非删除一个字符记录一个,然后用循环语句一个字符一个字符地单独输出
2、我运行了一下,事实证明,上面的结论是正确的:不注释掉时,能够删除需要删除的字符,注释掉以后,不能删除字符
|
|