C语言 将标准写入文件



我正在尝试将 stdin 写入文件,但由于某种原因,我倾向于读取零字节。

这是我的来源:

#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 1024
int main(int argc, char* argv[]) {
    if (feof(stdin))
        printf("stdin reached eofn");
    void *content = malloc(BUF_SIZE);
    FILE *fp = fopen("/tmp/mimail", "w");
    if (fp == 0)
        printf("...something went wrong opening file...n");
    printf("About to writen");
    int read;
    while ((read = fread(content, BUF_SIZE, 1, stdin))) {
        printf("Read %d bytes", read);
        fwrite(content, read, 1, fp);
        printf("Writing %dn", read);
    }
    if (ferror(stdin))
        printf("There was an error reading from stdin");
    printf("Done writingn");
    fclose(fp);
    return 0;
}

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

About to write
Done writing

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

你有两个整数参数要颠倒fread()。您告诉它填充缓冲区一次,否则就会失败。相反,您希望告诉它读取单个字符,最多 1024 次。反转两个整数参数,它将按设计工作。

相关内容

  • 没有找到相关文章

最新更新