Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R和K,charcount(1.5.2)未给出正确的结果_C - Fatal编程技术网

R和K,charcount(1.5.2)未给出正确的结果

R和K,charcount(1.5.2)未给出正确的结果,c,C,我正在阅读C编程语言书,R和K我想它被称为 我在Ubuntu中完成所有这些,甚至直接从文件中复制和粘贴示例都不起作用 这就是这本书的内容 #include <stdio.h> /* count characters in input; 1st version */ main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); } #

我正在阅读C编程语言书,R和K我想它被称为

我在Ubuntu中完成所有这些,甚至直接从文件中复制和粘贴示例都不起作用

这就是这本书的内容

 #include <stdio.h>
 /* count characters in input; 1st version */
main()    {
    long nc;
    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}
#包括
/*计算输入中的字符数;第一版*/
main(){
长nc;
nc=0;
while(getchar()!=EOF)
++数控;
printf(“%ld\n”,nc);
}
它的意思是读入一行输入,告诉你它有多少个字符

然而,在我点击回车键之后,我就有了一个新行要输入

在另一个问题中,我看到ctrl+d会创建一个EOF,所以我尝试了,但这给了我一个错误的数字(例如,qwerty得到7)

我做错了什么/Ubuntu有没有改变这一点的功能


谢谢

你搞错了,这个程序并不意味着读入一行输入,并告诉你它有多少个字符。它旨在计算整个输入中的字符数,以便将换行字符计数为


只有当它看到输入中出现EOF字符时才会停止。

似乎没问题,当按ctrl+d时会发生什么情况?它会打印一个数字,比预期的数字多1。我认为这是把换行符算作一个字符。事实上,换行符就是一个字符。好吧,但在上一个,它把你放进去的东西,为什么把换行符算作一个EOF字符?”c=getchar();while(c!=EOF){putchar(c);c=getchar()代码对我来说很好。如果你不想写新行,试着写点什么,然后按两次
Ctrl+d
。它会在同一行上打印字符数。你能试试吗?在上一行
putchar getchar等
中,它不将换行计算为EOF。你可以在按enter键后继续键入。结果是输出字符在
getchar
输出一个换行符之前,actors会一直处于缓冲状态。@Franknsten如果答案解决了您的问题,请接受它。