我自己熟悉C编程,并希望编写类似于expand的程序。命令行工具首先读取stdin
的每个输入,对其进行处理并将完整结果写入stdout
。我怎样才能以优雅的方式实现这一目标?
目前我的代码看起来像这样。这在处理文件时非常有效,但显然当用户输入每个换行符后input
为stdin
时,他会立即获得输入行的结果。
char buffer[1024];
while (fgets(&buffer[0], sizeof(buffer) / sizeof(char), input) != NULL)
{
/* do something */
printf("output");
}
最诚挚的问候,
Oliver Hanappi
答案 0 :(得分:1)
将所有输出写入临时文件而不是stdout
,然后在程序执行结束时从此临时文件复制到stdout
。
答案 1 :(得分:0)
那么,是什么让你认为stdin
将永远关闭? :)
您可以使用isatty(STDIN_FILENO)
来确定stdin
是否与用户输入相关联。 (如果是,则函数返回非零。)如果是这种情况,则可以相应地改变行为。