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

时间:2019-06-09 11:34:47

标签: c getchar

我有一个计算字符数的代码。它使用getchar(),执行时我使用(./a.out

使用条件时,

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的原因,因为它将10记为\ n。但是,“ \ n”是从哪里来的?

1 个答案:

答案 0 :(得分:1)

我敢打赌,您实际上尚未验证文件的大小。再次检查尺寸

ls -ls test.txt

wc -c test.txt

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

  

但是,'\ n'是从哪里来的?

这首先取决于您如何创建或编辑文件。

如果您使用创建

echo "Test file" > test.txt
例如,

,则bash将自动在末尾添加换行符。某些文本编辑器可能会做同样的事情。