【发布时间】:2021-02-04 13:53:11
【问题描述】:
我正在解决一本 C 编程书籍中的一些问题,以复习字符串。我不知道为什么我的解决方案不起作用。
问题要求编写一个名为 censor 的函数,该函数通过将每次出现的 foo 替换为 xxx 来修改字符串。
我的代码:
int main()
{
char msg[] = "I love food, you fool.";
censor(msg);
puts(msg);
return 0;
}
void censor(char *str) {
char *c = str;
while (c+2 != '\0') {
if (*c == 'f' && *(c+1) == 'o' && *(c+2) == 'o')
*c = *(c+1) = *(c+2) = 'x';
c++;
}
}
我发现 while 循环运行了大约 1700 次。我很确定 msg[] 会在字符串结尾自动包含一个空字符。
【问题讨论】:
-
*(c+i)更常见于c[i],甚至*c通常写成c[0]
标签: c while-loop char c-strings function-definition