首页 > c的字符计数问题

c的字符计数问题

这是一段用来计算输入字符数量的代码

#include <stdio.h>

main()
{
    double nc;
    
    for (nc = 0; getchar() != EOF; ++nc);
    printf("%.0f\n", nc);
}

这是我的测试

我输入了123然后ctrl+Z(EOF),之后我继续输入了123,回车,再次ctrl+Z,再回车。
结果是输出了一个4。

然而我认为结果应该是3,因为第一次的123是3个字符,然后ctrl+Z也就是EOF。

现在有两个疑问:
1.输出结果的4里面的第四个字符是我之前输入的哪一个?
2.为什么在我输出第一个ctrl+Z再回车之后程序没结束,而是当我换行敲第二个ctrl+Z再回车之后程序才结束?

问题比较长,先谢谢了。


参考http://www.360doc.com/content/13/0929/19/9206388_318021611.shtml
主要是Windows的设计,当第一次输入^Z的时候,会在缓冲区中加入一个\26(ASCII码的26号字符,这就是你读到的第4个字符),而第二次输入^Z时,会检查缓存区的最后一个字符是否是\26,如果是的话就返回EOF

【热门文章】
【热门文章】