繁体   English   中英

读取整个stdin直到C中的EOF

[英]Read entire stdin until EOF in C

我正在编写一个程序,它将生成文件的哈希值或stdin的字符串。 但是,fseek和ftell将无法在stdin上运行,因此我无法保留缓冲区,将stdin倒回到开头,并且整个流都会出现问题。 那么有什么简单的方法可以做到这一点吗? 或者我应该每次只读n个字符并将其发送到每个哈希的状态更新函数?

如果你认为stdin总是文本的,你可以使用getline(3)从它读取整行。

如果你想处理任意输入(包括非文本stdin ),你应该在一个相当大的块(例如4K或16K字节)的循环中使用fread(3 )并考虑部分读取。 该块可能包含空字节。 您将更新循环内的状态。

您可以在中间进行部分读取,例如,如果您正在Linux上读取管道(使用popen(3) ....)...

暂无
暂无

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

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