while( (reader=fread(array, sizeof(char), size, stdin))>0 )

当我调用一个我想模拟的函数来为自己的fread赋值时,我需要这种保护。

对不起,令人恐惧的英语。

最佳答案

@Fritschy的回答和@Ben Voigt的评论构成了便携式解决方案。

如果您使用的是Unix / Linux /类似操作系统,则可以通过以下方式将内容实际写入stdin中:

int p[2];

// error return checks omitted
pipe(p);
dup2(p[0], STDIN_FILENO);

FILE *stdin_writer = fdopen(p[1], "w");

现在写入stdin_writer

请参阅POSIX标准中的 pipe dup2 fdopen

09-11 17:32