В C puts(string);
выведет string
на стандартный вывод, за которым следует новая строка. fputs(fileptr, string);
, с другой стороны, запишет string
в fileptr
без завершающей новой строки. Есть ли какая-нибудь функция, подобная fputs()
, которая добавляет новую строку, или мне следует придерживаться fprintf(fileptr, "%s\n", string);
, как я использовал?
fputs()
кажется мне более эффективным, чем fprintf()
, поскольку он не анализирует ввод. Я знаю, что мог бы также использовать
fputs(string, fileptr);
fputc('\n', fileptr);
но мне было интересно, есть ли способ сделать это с помощью записи на один диск.
Я попытался выяснить, как puts()
добавляет новую строку (поскольку printf()
на самом деле является просто оболочкой для vfprintf(stdout, ...)
, я подумал, что то же самое может быть верно для puts()
и fputs()
), но, как ни странно, я не могу найти puts()
в исходном коде glibc.
fputs(fileptr, string);
иfputc(fileptr, '\n');
) неверны. Параметр файлового потока идет последним, за исключениемfprintf()
иfscanf()
и их вариантов. Поэтому вызовы функций должны бытьfputs(string, fileptr);
иfputc('\n', fileptr);
. - person Jonathan Leffler   schedule 11.07.2018