У меня есть функция, которая ожидает ФАЙЛ *, и я обычно создаю ее, читая из файла.Теперь при определенных обстоятельствах я хочу читать со стандартного ввода.Есть ли способ прочитать предложение с ранее неопределенной длины из стандартного ввода и записать его в файл *?
Вы можете использовать getchar() на терминале с линейной буферизацией и читать его так:
getchar()
int i; while((i=getchar())!=EOF)
И затем использовать его для записи в файл.
Да, просто используйте fp и stdin при необходимости
fp
stdin
void copyline(FILE *fp) { int ch; while ((ch = fgetc(stdin) != EOF) && (ch != '\n')) { fputc(ch, fp); } if (ch != EOF) fputc('\n', fp); }
stdin, stdout и stderr уже имеют тип FILE *.Таким образом, вы можете использовать его как любую другую переменную FILE *.
stdout
stderr
FILE *