Основы программирования в Linux
Шрифт:
Далее приведена синтаксическая запись функций:
#include <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar;
Функция
getc
эквивалентна fgetc
за исключением того, что может быть реализована как макрос. В этом случае аргумент stream
может определяться несколько раз, поэтому он лишен побочных эффектов (например, не затронет переменные). К тому же вы не можете гарантировать возможности применения адреса getc
как указателя функции. Функция
getchar
эквивалентна вызову функции getc(stdin)
и читает следующий символ из стандартного ввода. fputc, putc и putchar
Функция
fputc
записывает символ в файловый поток вывода. Она возвращает записанное значение или EOF
в случае аварийного завершения.
#include <stdio.h>
int fputc(int с, FILE *stream); int putc(int c, FILE *stream); int putchar(int c);
Как и в случае функций
fgetc/getc
, функция putc
— эквивалент fputc
, но может быть реализована как макрос. Функция
putchar
— то же самое, что вызов putc(с, stdout)
, записывающий один символ в стандартный вывод. Имейте в виду, что функция putchar
принимает, а функция getchar
возвращает символы как данные типа int
, а не char
. Это позволяет индикатору конца файла (EOF
) принимать значение -1, лежащее вне диапазона кодов символов. fgets и gets
Функция
fgets
читает строку из файла ввода stream
.
#include <stdio.h>
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 <stdio.h>
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
— выводить целое как восьмеричное, шестнадцатеричное число;
Поделиться:
Популярные книги
Царь царей
9. Бедовый
Фантастика:
фэнтези
мистика
5.00
рейтинг книги
Законы Рода. Том 14
14. Граф Берестьев
Фантастика:
аниме
фэнтези
эпическая фантастика
5.00
рейтинг книги
Имя нам Легион. Том 9
9. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Точка Бифуркации VI
6. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон не играет по правилам
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Студиозус
3. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Лекарь Империи 9
9. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
5.00
рейтинг книги
Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Рассвет русского царства
1. Новая Русь
Документальная литература:
историческая литература
5.00
рейтинг книги
Первый среди равных. Книга VIII
8. Первый среди Равных
Фантастика:
аниме
фантастика: прочее
эпическая фантастика
попаданцы
5.00
рейтинг книги
Отморозок 5
5. Отморозок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Император Пограничья 4
4. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 9
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Отморозок 4
4. Отморозок
Фантастика:
попаданцы
фантастика: прочее
5.00