我有一个计算字符数的代码。它使用getchar(),执行时我使用(./a.out 使用条件时, 代替 在c是main中定义的int的函数中,计数器是正确的。 我认为问题是由于'\ n'字符引起的。当我如上所述使用putchar(c)时,假设test.txt文件中有9个字符。现在,它应该打印文件中的所有字符,然后输出9。但是,它将打印10。同样,命令提示符在显示字符后移至下一行,这是打印10的原因,因为它将10记为\ n。但是,“ \ n”是从哪里来的?while((c = getchar()) != EOF && c != '\n')
while((c = getchar()) != EOF)
int main()
{
long nc=0; int c;
while((c = getchar()) != EOF)
{
putchar(c);
++nc;
}
printf("%ld", nc);
}
答案 0 :(得分:1)
我敢打赌,您实际上尚未验证文件的大小。再次检查尺寸
ls -ls test.txt
或
wc -c test.txt
在十六进制编辑器中打开文件。我怀疑您会在末尾找到换行符(0x0A
)。
但是,'\ n'是从哪里来的?
这首先取决于您如何创建或编辑文件。
如果您使用创建
echo "Test file" > test.txt
例如,,则bash
将自动在末尾添加换行符。某些文本编辑器可能会做同样的事情。