Основы программирования в 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
— выводить целое как восьмеричное, шестнадцатеричное число;
Поделиться:
Популярные книги
Вперед в прошлое 5
5. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 16
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Искра
2. Петя и Валерон
Фантастика:
рпг
аниме
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 5
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXX
30. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Как я строил магическую империю 15
15. Как я строил магическую империю
Фантастика:
попаданцы
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 9
9. Как я строил магическую империю
Фантастика:
постапокалипсис
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Законы Рода. Том 4
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Локки 10. Потомок бога
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Гранит науки. Том 4
4. Герой Империи
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Искатель 3
3. Валинор
Фантастика:
попаданцы
рпг
фэнтези
5.00
рейтинг книги
Сон для слабаков!
5. Моё пространственное убежище
Фантастика:
фэнтези
боевая фантастика
рпг
5.00
рейтинг книги
Последний Герой. Том 3
3. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00