gpt4 book ai didi

c - 如何使 stdin 上的 getc() 成为二进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:54 25 4
gpt4 key购买 nike

我在 getc() 中使用 while 循环来读取文件句柄,它工作正常。现在我正在添加对管道的支持。

我的问题是,虽然 x0A、X0D 和 x0A0D 通过得很好,但 x0D0A 的任何情况都会减少到只有 x0A。此外,x1A 似乎在遇到时完全停止了该过程。

我正在输入 tar 的输出,并且弄乱了文件。

FILE *FH;
FH=stdin;
int buff;
while((buff=getc(FH))!=EOF) {
//stuff
}

这很简单,因为 FH 需要指向文件或标准输入。为了进行测试,我只是将 buff 写入文件以查看更改。如果 FH 是一个文件,代码将完美运行。

我在使用 tar、type 和 cat 作为管道源时看到了相同的行为

最佳答案

您需要使用二进制模式fopen。我不确定你是否可以在 stdin 上使用 freopen,但试一试:

freopen(NULL, "rb", stdin);

关于c - 如何使 stdin 上的 getc() 成为二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com