Что возвращает fgets
Перейти к содержимому

Что возвращает fgets

  • автор:

Что возвращает fgets

#include
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
int ungetc(int c, FILE *stream);

ОПИСАНИЕ

Функция fgetc() считывает очередной символ из потока stream и возвращает unsigned char преобразованный в int, или EOF при достижении конца файла или при возникновении ошибки. Функция getc() похожа на fgetc(), но она может быть реализована как макрос, который определяет состояние stream более одного раза. Функция getchar() эквивалентна getc(stdin). Функция fgets() считывает максимум size -1 символов из stream и записывает их в буфер, на который указывает s. Чтение прерывается по достижении EOF или символа новой строки. Если получен символ новой строки, то он заносится в буфер. В конец буфера после последнего символа добавляется завершающий байт null (‘\0’). Функция ungetc() заносит c обратно в stream, преобразует в unsigned char, если это возможно для дальнейших операций чтения. Занесённые обратно символы будут возвращаться в обратном порядке; гарантируется только одно занесение символов. Вызовы функций, описанные здесь, могут смешиваться друг с другом и с другими функциями ввода из библиотеки stdio для того же потока ввода. Неблокирующие аналоги смотрите в unlocked_stdio(3).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функции fgetc(), getc() и getchar() возвращают символ, считанный как unsigned char и преобразованный в int, или EOF по достижении конца файла или при возникновении ошибки. Функция fgets() возвращает s при удачном выполнении и NULL при ошибке или если достигнут конец файла, а символы остались несчитанными. При успешном выполнении функция ungetc() возвращает c или EOF при ошибке.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
fgetc(), fgets(), getc(),
getchar(), ungetc()
безвредность в нитях безвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001, POSIX.1-2008, C89, C99. Не рекомендуется чередовать вызовы функций ввода библиотеки stdio с низкоуровневыми вызовами read(2) для дескриптора файла, связанного с потоком ввода; результат этого будет неопределённым и, скорее всего, не тем, который ожидается.

Что возвращает fgets

Получает строку из потока байтов.

Синтаксис
char *fgets( char *string, int n, FILE *stream ); wchar_t *fgetws( wchar_t *string, int n, FILE *stream );
Параметры

string

Место хранения для данных.

Максимальное число символов для чтения.

stream

Указатель на структуру FILE.

Возвращаемое значение

Каждая из этих функций возвращает строку. NULL возвращается, чтобы указать ошибку или условие метки конца файла. Используйте функции feof или ferror, чтобы установить, имела ли место ошибка.

Замечания

Функция fgets читает строку из параметра входного потока и хранит её в строке. fgets читает символы от текущей потоковой позиции до конца потока байтов и включает в себя первый символ новой строки, или до тех пор, пока число прочитанных символов не будет равно n – 1, что бы не было на первом месте. Результат, сохраненный в строке, добавляется в конец с нулевым символом. Символ новой строки, если прочитано, включается в строку.

fgetws — широкосимвольная версия fgets.

fgetws читает широкосимвольный параметр string как строку, состоящую из многобайтовых символов или широкосимвольную строку согласно тому, открыт ли поток байтов в текстовом режиме или режиме двоичного счета, соответственно. Дополнительную информацию об использовании режимов текста и двоичного счета в Unicode и мультибайтовом «потоковом вводе — выводе», см. в статьях Файловый ввод-вывод (I/O) в режиме текста и двоичного счета и Ввод — вывод (I/O) потока байтов в Unicode в режимах текста и двоичного счета .

Унифицированно-текстовые стандартные отображения
СтандартныйTCHAR.H _UNICODE & _MBCS не определен _MBCS определен _UNICODE определен
_fgetts fgets fgets fgetws

char *fgets(char *str, int num, FILE *stream)

Функция fgets() считывает до num-1 символов из файла stream и помещает их в массив символов, на который указывает str. Символы считываются до тех пор, пока не встретится символ «новая строка», EOF или до достижения указанного предела. По окончании считывания в массив str сразу после последнего считанного символа помещается нулевой символ. Символ «новая строка» при считывании будет сохранен и станет частью массива str.

В случае удачи fgets() возвращает str, при неудаче возвращается NULL. В случае ошибки по чтению содержимое массива, на который указывает str, не определено. Поскольку как в случае ошибки, так и при достижении конца файла возвращается null, для определения того, что имен­но произошло, необходимо использовать feof() или ferror().

Эта программа использует fgets ( ) для отображения содержимого текстового файла , на который указывает первый аргумент командной строки :
#include
#include
int main ( int argc , char * argv [ ] )
{
FILE * fp ;
char str [ 128 ] ;
if ( ( fp = fopen ( argv [ 1 ] , «r» ) ) == NULL ) {
printf ( «Cannot open file. \n » ) ;
exit ( 1 ) ;
}
while ( ! feof ( fp ) ) {
if ( fgets ( str , 126 , fp ) )
printf ( «%s» , str ) ;
}
fclose ( fp ) ;
return 0 ;
}

Что возвращает fgets

Возвращает последовательность байтов из файла или порта связи, открытого с помощью файловой функции низкого уровня.

FGETS(nFileHandle [, nBytes])

Параметры:
nFileHandle
Задает дескриптор файла для файла или порта связи, из которого функция FGETS( ) будет возвращать данные.
nBytes
Задает количество байтов, возвращаемых функцией FGETS( ). Она возвращает заданное число байтов, если только раньше не встретится возврат каретки. FGETS( ) возвращает данные, начиная от исходной позиции указателя файла и кончая символом возврата каретки, если он попадает в число nBytes байтов.
Если аргумент nBytes опущен, FGETS( ) по умолчанию возвращает максимум 254 байта.

Комментарии:
Можно читать файл по строкам, выдавая последовательность функций FGETS( ).
FGETS( ) возвращает серию байтов в виде символьной строки. Данные возвращаются, начиная с текущей позиции указателя файла и до тех пор, пока не встретится возврат каретки. После этого указатель файла устанавливается на байт, непосредственно следующий за символом возврата каретки. Сам этот символ не возвращается в составе строки, символы перевода строки также отбрасываются.

*** TEST.TXT must exist *** STORE FOPEN('test.txt') TO gnFileHandle && Open the file STORE FSEEK(gnFileHandle, 0, 2) TO gnEnd && Move pointer to EOF STORE FSEEK(gnFileHandle, 0) TO gnTop && Move pointer to BOF IF gnEnd && Is file empty? WAIT WINDOW 'This file is empty!' NOWAIT ELSE && If not gcString = FGETS(gnFileHandle, gnEnd) && Store contents ? gcString ENDIF = FCLOSE(gnFileHandle) && Close the file 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *