Read from stdin write to stdout in C
c, io, stdin, stdio, stdout
Solution
i can quote an answer by me: https://stackoverflow.com/a/296018/27800
fread(buffer, sizeof(char), block_size, stdin);
Problem
I am trying to write a cat clone to exercise C, I have this code: ``` #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; } ``` I tried `echo "1..2..3.." | ./cat` and `./cat < garbage.txt` but I don't see any output on terminal. What I am doing wrong here? Edit: According to comments and answers, I ended up doing this: ``` 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; } } ```