gpt4 book ai didi

c - getchar() 函数计算 C 中的字符数

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:53 25 4
gpt4 key购买 nike

我有一个计算字符数的代码。它使用 getchar() 并在执行时使用 (./a.out < test.txt),其中 test.txt 是本地保存的文本文件。问题是计数器显示的值大于文件中的字符。

当我使用条件时,

while((c = getchar()) != EOF && c != '\n')

代替

while((c = getchar()) != EOF)

在 c 是 main 中定义的 int 的函数中,计数器是正确的。

int main() 
{
long nc=0; int c;
while((c = getchar()) != EOF)
{
putchar(c);
++nc;
}
printf("%ld", nc);
}

我认为问题是由于 '\n' 字符引起的。当我如上所示使用 putchar(c) 时,假设我的 test.txt 文件中有 9 个字符。现在,它应该打印文件中的所有字符,然后输出 9。但是,它会打印 10。此外,命令提示符在显示字符后转移到下一行,这是打印 10 的原因,因为它将 '\n' 计为一个字符。但是,那个'\n'是从哪里来的呢?

最佳答案

我敢打赌您实际上并没有验证文件的大小。使用任一方法仔细检查尺寸

ls -ls test.txt

wc -c test.txt

在十六进制编辑器中打开您的文件。我怀疑您会在末尾找到换行符 (0x0A)。

But, from where did that '\n' came from?

这首先取决于您创建或编辑文件的方式。

如果你创建使用

echo "Test file" > test.txt

例如,bash 会自动在末尾添加一个换行符。某些文本编辑器可能会执行相同的操作。

关于c - getchar() 函数计算 C 中的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514247/

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