繁体   English   中英

输入来自Kernighan和Ritchie的例子

[英]Input for examples from Kernighan and Ritchie

在第2版的第1.5.2节中。 K&R介绍了getchar()和putchar(),并给出了一个字符计数,然后是行计数以及本章其他内容的示例。

这是字符计数程序

#include <stdio.h>
main() {

long nc;

nc = 0;
while (getchar() != EOF)
    ++nc;
printf("%ld\n",nc);
}

输入应该来自哪里? 键入终端命令窗口并按Enter键为文件复制程序工作但不是为此。 我正在使用XCode for Mac。

看起来最简单的方法是读取带有“pathway / folder / read.txt”路径的文本文件,但我也遇到了麻烦。

从交互式命令行,按下Ctrl-d换行符后,或CTRL-D两次换行之后,以终止输入。 然后程序将看到EOF并显示结果。

要按路径传递文件,并避开交互式部分,请使用shell的< redirection operator,。 ./count_characters < path/to/file.txt

标准C输入功能仅在您按下Enter键时开始处理您键入的内容IOW。您按下的每个键都会向系统缓冲区(shell)添加一个字符。然后当该行完成时(即按Enter键),这些字符被移动到C标准缓冲区。 getchar()读取缓冲区中的第一个字符,该字符也将其从缓冲区中删除。每次连续调用getchar()读取并删除下一个字符,依此类推。 如果你没有读到键入缓冲区的每个字符,而是输入另一行文本,那么下一次调用getchar()将继续读取前一行留下的字符; 你通常会看到这个程序超过你的第二个输入。 顺便说一句,Enter键的换行符也是一个字符,也存储在键盘缓冲区中,所以如果要读入新输入,首先需要清除键盘缓冲区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM