Рассмотрим следующий код:
freopen("buffer.txt", "w+", stdin);
fprintf(stdin, "hello");
fseek(stdin, 0, SEEK_SET);
char str[16];
scanf("%s", str);
printf("%s", str);
В стандарте я не нашел ни одной записи, запрещающей мне это делать, но также нет записей, явно разрешающих это. Стоит ли ожидать, что этот код будет работать на любом стандартном совместимом компиляторе? Будет ли какая-либо стандартная функция ввода / вывода прервана или приведет к UB, если stdin
(или stdout
) будет открыт в режиме чтения-записи? А как насчет потоков C ++?