我正在尝试编写一个猫克隆来练习 C,我有以下代码:
#include <stdio.h>
#define BLOCK_SIZE 512
int main(int argc, const char *argv[])
{
if (argc == 1) { // copy stdin to stdout
char buffer[BLOCK_SIZE];
while(!feof(stdin)) {
size_t bytes = fread(buffer, BLOCK_SIZE, sizeof(char),stdin);
fwrite(buffer, bytes, sizeof(char),stdout);
}
}
else printf("Not implemented.\n");
return 0;
}
我试过了 echo "1..2..3.." | ./cat
和 ./cat < garbage.txt
但我在终端上看不到任何输出。我在这里做错了什么?
编辑: 根据评论和答案,我最终这样做了:
void copy_stdin2stdout()
{
char buffer[BLOCK_SIZE];
for(;;) {
size_t bytes = fread(buffer, sizeof(char),BLOCK_SIZE,stdin);
fwrite(buffer, sizeof(char), bytes, stdout);
fflush(stdout);
if (bytes < BLOCK_SIZE)
if (feof(stdin))
break;
}
}
最佳答案
我可以引用我的回答:https://stackoverflow.com/a/296018/27800
fread(buffer, sizeof(char), block_size, stdin);
关于c - 在 C 中从 stdin 读取写入到 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129085/