Вот что не так делаю?
Как-то так выходило, что до сих пор их обычно не использовал, но стал возиться с одной очень старой программой и вылезло.
#include<stdio.h>
int main()
{
int ch=0; /* Можно вместо int написать char, не присваивать нуль и т.п. */
while((ch=getc(stdin)!=EOF)) /* можно getchar() */
{
putc(ch,stdout); /* можно putchar(ch) */
}
return 0;
}
Компилирую gcc -o getcputc getcputc.c
Затем просто копирую какой-нибудь файл, например:
$ cat a.mkv |./getcputc > b.mkv
Создается b.mkv такой же длины как и a.mkv, но все байты в нем равны 0x01h Подумал, что может потоки перемешиваются. Если вместо stdout поставить stderr программа вообще висит на длинных файлах, а на коротких вывод нулевой длины. Если открыть через fopen() файл и выводить туда в putc, то тоже все байты 01. Не зависит от наличия fclose()
Чувствую, что в чем-то элементарном запутался, но не могу понять в чем.
Решение: Глаз замылился со скобками Запутался в сишных getc/putc (комментарий)