Основы программирования в 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
— выводить целое как восьмеричное, шестнадцатеричное число;
Поделиться:
Популярные книги
Мечников. Из доктора в маги
1. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Господин из завтра. Тетралогия.
Фантастика:
альтернативная история
8.32
рейтинг книги
Кодекс Охотника. Книга XXIX
29. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Адепт
4. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник с Меткой Охотника
1. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Неудержимый. Книга VI
6. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ермак. Регент
10. Ермак
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кодекс Охотника. Книга ХХ
20. Кодекс Охотника
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VII
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Тайные поручения
6. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
5.00
рейтинг книги
Локки 4 Потомок бога
4. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Дважды одаренный. Том II
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Назад в будущее
5. Зург
Фантастика:
боевая фантастика
5.00
рейтинг книги
Отмороженный 12.0
12. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00