Книга: Основы программирования в Linux
fgets и gets
fgets и gets
Функция fgets
читает строку из файла ввода stream
.
#include <stdio.h>
char *fgets(char *s, int n, FILE *stream);
char *gets(char *s);
Функция fgets
пишет символы в строку, заданную указателем s, до тех пор, пока не встретится новая строка, либо не будет передано n-1
символов, либо не будет достигнут конец файла. Любая встретившаяся новая строка передается в строку, принимающую символы, и добавляется завершающий нулевой байт . Любой вызов передает максимум n-1
символов, т.к. должен быть вставлен нулевой байт, обозначающий конец строки и увеличивающий общее количество до n байтов.
При успешном завершении функция fgets
возвращает указатель на строку s. Если поток указывает на конец файла, она устанавливает индикатор EOF
для потока и возвращает пустой указатель. Если возникает ошибка чтения, fgets
возвращает пустой указатель и устанавливает значение переменной errno
, соответствующее типу ошибки.
Функция gets
аналогична fgets
за исключением того, что она читает из стандартного ввода и отбрасывает любые обнаруженные обозначения новой строки. Функция добавляет завершающий нулевой байт в принимающую строку.
Примечание
Учтите, что функция gets
не ограничивает количество символов, которые могут передаваться, поэтому она может переполнить свой пересылочный буфер. По этой причине вам следует избегать применения этой функции и заменять ее функцией fgets
. Многие проблемы безопасности порождены функциями в программах, сделанных для переполнения буфера тем или иным способом. Это одна из таких функций, поэтому будьте осторожны!
- Функция fgets( )
- ВВОД-ВЫВОД ФАЙЛА: fprintf( ), fscanf( ), fgets( ) И fputs( )
- Chapter 11. Iptables targets and jumps
- 4.3.3. Makefile Targets
- 11.5. Функции getservbyname и getservbyport
- 12.5.2. Ruby и wxWidgets
- 5.1.1 Make Targets
- Пример: использование функций gethostbyname и getservbyname
- Метод GetSpecialFolder
- Функция gets( )
- Свойство TargetSite
- 20.9.1 Формат сообщений gets, sets и responses в версии 1