Как и в случае функций fgetc/getc, функция putc— эквивалент fputc, но может быть реализована как макрос.
Функция putchar— то же самое, что вызов putc(с, stdout), записывающий один символ в стандартный вывод. Имейте в виду, что функция putcharпринимает, а функция getcharвозвращает символы как данные типа int, а не char. Это позволяет индикатору конца файла ( EOF) принимать значение -1, лежащее вне диапазона кодов символов.
Функция fgetsчитает строку из файла ввода stream.
#include
char *fgets(char *s, int n, FILE *stream);
char *gets(char *s);
Функция fgetsпишет символы в строку, заданную указателем s, до тех пор, пока не встретится новая строка, либо не будет передано n-1символов, либо не будет достигнут конец файла. Любая встретившаяся новая строка передается в строку, принимающую символы, и добавляется завершающий нулевой байт \0. Любой вызов передает максимум n-1символов, т.к. должен быть вставлен нулевой байт, обозначающий конец строки и увеличивающий общее количество до n байтов.
При успешном завершении функция fgetsвозвращает указатель на строку s. Если поток указывает на конец файла, она устанавливает индикатор EOFдля потока и возвращает пустой указатель. Если возникает ошибка чтения, fgetsвозвращает пустой указатель и устанавливает значение переменной errno, соответствующее типу ошибки.
Функция getsаналогична fgetsза исключением того, что она читает из стандартного ввода и отбрасывает любые обнаруженные обозначения новой строки. Функция добавляет завершающий нулевой байт в принимающую строку.
Примечание
Учтите, что функция getsне ограничивает количество символов, которые могут передаваться, поэтому она может переполнить свой пересылочный буфер. По этой причине вам следует избегать применения этой функции и заменять ее функцией fgets. Многие проблемы безопасности порождены функциями в программах, сделанных для переполнения буфера тем или иным способом. Это одна из таких функций, поэтому будьте осторожны!
Форматированные ввод и вывод
Для создания вывода управляемого вида существует ряд библиотечных функций, с которыми вы, возможно, знакомы, если программируете на языке С. К ним относятся функция printfи родственные функции для вывода значений в файловый поток, а также scanfи другие функции для чтения значений из файлового потока.
printf, fprintf и sprintf
Семейство функций printfформатирует и выводит переменное число аргументов разных типов. Способ их представления в потоке вывода управляется параметром format, являющимся строкой с обычными символами и кодами, называемыми спецификаторами преобразований, указывающими, как и куда выводить остальные аргументы.
#include
int printf(const char *format, ...);
int sprintf(char *s, const char *format, ...);
int fprintf(FILE * stream, const char *format, ...);
Функция printfвыводит результат в стандартный вывод. Функция fprintfвыводит результат в заданный файловый поток stream. Функция sprintfзаписывает результат и завершающий нулевой символ в строку s, передаваемую как параметр. Эта строка должна быть достаточно длинной, чтобы вместить весь вывод функции.
У семейства printfесть и другие члены, обрабатывающие свои аргументы различными способами. См. подробную информацию на страницах интерактивного руководства.
Обычные символы передаются в вывод без изменений. Спецификаторы преобразований заставляют функцию printfвыбирать и форматировать дополнительные аргументы, передаваемые как параметры. Спецификаторы всегда начинаются с символа %. Далее приведен простой пример:
printf("Some numbers: %d, %d, and &d\n", 1, 2, 3);
Он порождает в стандартном выводе следующую строку.
Some numbers: 1, 2, and 3
Для вывода символа %следует применять последовательность %%, чтобы не путать его со спецификатором преобразования.
Далее перечислены наиболее часто применяемые спецификаторы преобразований:
□ %d, %i— выводить целое как десятичное число;
□ %о, %x— выводить целое как восьмеричное, шестнадцатеричное число;
□ %с— выводить символ;
□ %s— выводить строку;
Читать дальше