gpt4 book ai didi

c - 将标准输入写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:09 24 4
gpt4 key购买 nike

我正在尝试将标准输入写入文件,但出于某种原因,我一直在读取零字节。

这是我的来源:

#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 1024

int main(int argc, char* argv[]) {

if (feof(stdin))
printf("stdin reached eof\n");

void *content = malloc(BUF_SIZE);

FILE *fp = fopen("/tmp/mimail", "w");

if (fp == 0)
printf("...something went wrong opening file...\n");

printf("About to write\n");
int read;
while ((read = fread(content, BUF_SIZE, 1, stdin))) {
printf("Read %d bytes", read);
fwrite(content, read, 1, fp);
printf("Writing %d\n", read);
}
if (ferror(stdin))
printf("There was an error reading from stdin");

printf("Done writing\n");

fclose(fp);

return 0;
}

我正在运行 cat test.c | ./test 并且输出只是

About to write
Done writing

似乎读取了零字节,即使我正在传输很多东西。

最佳答案

您已将 fread() 的两个整数参数颠倒过来。您告诉它填充缓冲区一次,否则失败。相反,您想告诉它读取单个字符,最多 1024 次。反转两个整数参数,它将按设计工作。

关于c - 将标准输入写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769205/

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