gpt4 book ai didi

C、统计空格个数

转载 作者:太空狗 更新时间:2023-10-29 17:25:55 25 4
gpt4 key购买 nike

我正在编写一个将空格替换为“-”(<- 这个字符)的函数。我最终想返回我所做的更改数量。

#include <stdio.h>
int replace(char c[])
{
int i, cnt;
cnt = 0;
for (i = 0; c[i] != EOF; i++)
if (c[i]==' ' || c[i] == '\t' || c[i] == '\n')
{
c[i] = '-';
++cnt;
}
return cnt;
}

main()
{
char cat[] = "The cat sat";
int n = replace(cat);
printf("%d\n", n);
}

问题是,它正确地将字符串更改为“The-cat-sat”,但是对于 n,它返回值 3,而它应该返回 2。我做错了什么?

最佳答案

@4386427 建议这应该是另一个答案。 @wildplasser 已经提供了解决方案,这个答案解释了 EOF 和 '\0'

只有在读取文件时(EOF -> End Of File)你才会使用EOF。参见 this讨论。 EOF 用于表示文件结束,其值取决于系统。事实上,EOF 与其说是一个值,倒不如说是一个条件。您可以找到很好的解释 in this thread .当使用 char 数组或 char 指针时,它总是以 '\0' 字符结束,并且总是恰好有其中之一,因此,您可以使用它来突破遍历数组/指针时循环。这是确保您不会访问未分配的内存的可靠方法。

关于C、统计空格个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46746231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com