【发布时间】:2014-02-06 02:32:06
【问题描述】:
所以我试图通过我的代码传递一个.txt 文件,让它将字符单独回显到输出中。我正在运行脚本
./a.out < testWords.in > myOut.out
关键就在这里:
size_t bytes = fread(buffer. sizeof(char),sizeof(char),stdin);
fwrite(buffer,sizeof(char),bytes,stdout);
fflush(stdout);
效果很好。
但是如何在 if 语句中逐一解释字符?例如
if (bytes == '\n')
不会在换行时触发。
编辑:
getc(stdin) 是一种更有效的方式来完成我的任务。
【问题讨论】:
-
bytes不包含您读取的数据;你会在buffer[0]中找到它。由于您一次只阅读一个字符,您不妨使用getchar或getc;同样你可以使用putchar或putc。 -
fread(buffer, sizeof(char),sizeof(buffer),stdin); -
getc 是一种更有效的方法,谢谢 Keith Thompson。
-
这不仅仅是“更高效”。您尝试使用 fread 从文本文件中读取单个字符的事实表明您甚至没有阅读过关于 C 的书的单个章节。阅读一本书(最终是许多书)是您可能的唯一方法学习语言。细节不能被灌输。
标签: c stdout stdin fwrite fread