帮我看看这条奇怪的题目

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:20:18
第19题 编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
答案:

void fun(char s[],int c)
{
int i=0;
char *p;
p=s;
while(*p)
{
if(*p!=c)
{
s[i]=*p;
i++;
}
p++;
}
s[i]=‘\0’;(这句有什么用啊?我觉得这个循环好像是无限循环,请高人指点)
}

我觉得这个题目出不全,还有这个程序我看不明白

这不是死循环,当*P等于]‘\0’是终止while()循环,s[i]=‘\0’这是给字符数组,加一个结尾。因为你已经从字符数组中删除了一个字符,或者更多的这样我们只是把后面的字符向前串了一个位置,掩盖了我们要删除的字符,如果原来数组有10个字符,改变后仍然有10 个(如果你删掉一个)那么最后的一个和倒数第二个是一样的,我们并不想让他输出,于是我们加s[i]=‘\0’语句,使我们想要的远洋输出,‘\0’以后的不输出,即使有字符,也不输出。

1这句有什么用啊?我觉得这个循环好像是无限循环
字符串 最后一个字符 是空字符 这条不能,没有

2我觉得这个题目出不全,还有这个程序我看不明白
这个程序段 实现 将s字符串裁减到 第一次出现字符值为c的字符处
不过编的不太好