Чтение онлайн

на главную - закладки

Жанры

Основы программирования в 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
— выводить целое как восьмеричное, шестнадцатеричное число;

Поделиться:
Популярные книги

Тайны уставшего города

Хруцкий Эдуард Анатольевич
Документальная литература:
биографии и мемуары
6.80
рейтинг книги
Тайны уставшего города

Наследие Маозари 3

Панежин Евгений
3. Наследие Маозари
Фантастика:
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 3

Леди Малиновой пустоши

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Леди Малиновой пустоши

Приказано выжить!

Малыгин Владимир
1. Другая Русь
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.09
рейтинг книги
Приказано выжить!

Первый среди равных. Книга II

Бор Жорж
2. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга II

Прайм. День Платы

Бор Жорж
7. Легенда
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Прайм. День Платы

Товарищ "Чума" 5

lanpirot
5. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 5

Законы Рода. Том 7

Мельник Андрей
7. Граф Берестьев
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Законы Рода. Том 7

По прозвищу Святой. Книга первая

Евтушенко Алексей Анатольевич
1. Святой
Фантастика:
попаданцы
альтернативная история
6.40
рейтинг книги
По прозвищу Святой. Книга первая

Товарищ "Чума" 4

lanpirot
4. Товарищ "Чума"
Фантастика:
городское фэнтези
альтернативная история
5.00
рейтинг книги
Товарищ Чума 4

Мы – Гордые часть 8

Машуков Тимур
8. Стальные яйца
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мы – Гордые часть 8

Иной. Том 3. Родственные связи

Amazerak
3. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Иной. Том 3. Родственные связи

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Изгой Проклятого Клана

Пламенев Владимир
1. Изгой
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Изгой Проклятого Клана