Я знакомлюсь с программированием на С и хочу написать программу, похожую на expand. Инструмент командной строки сначала считывает каждый вход с stdin
, обрабатывает его и записывает полный результат в stdout
. Как я могу достичь этого элегантным образом?Как сохранить stdout до закрытия stdin?
В настоящее время мой код выглядит примерно так. Это отлично работает при обработке файлов, но, очевидно, когда input
равно stdin
после каждой введенной пользователем новой строки, он сразу же получает результат для введенной строки.
char buffer[1024];
while (fgets(&buffer[0], sizeof(buffer)/sizeof(char), input) != NULL)
{
/* do something */
printf("output");
}
С наилучшими пожеланиями,
Оливер Hanappi
Вот как работают средства командной строки. Если вы хотите, чтобы весь вывод находился в одном месте, попробуйте перенаправить вывод в файл. – casablanca