不明白为什么输出结果是8,而不是4
代码来自《the c programming language》
换行符也是一个字符啊
\n != EOF
getchar() 会捕获换行符 \n 作为一个输入
可以这样来用计算一行字符数
while(getchar() != '\n')
或者跳过\n 不计算它
while((c=getchar()) != EOF && c != '\n')
大家的答案都是没有问题的。答主,其实你应该仔细观察一下你使用getchar()
函数接收的具体的内容。
程序可以修改如下:
c
1 #include<stdio.h> 2 3 int main(){ 4 long nc; 5 int displayContent = 0; 6 nc = 0; 7 8 while ((displayContent = getchar()) != EOF) { 9 printf("%d\n", displayContent); 10 ++nc; 11 } 12 13 printf("%ld\n", nc); 14 15 return 0; 16 }
你能更加直观看到结果。
你的输入可以理解为:c\na\n1\nc\nEOF
,其中\n
代表换行符,EOF
代表文件结尾符(值一般为-1
)。你可以数一数,EOF
之前是不是8个字符呢?