fgets() — 스트링 읽기

형식

#include <stdio.h>
char *fgets (char *string, int n, FILE *stream);

언어 레벨

ANSI

스레드세이프

설명

fgets() 함수는 현재 stream 위치에서 어느 것이 먼저 오건 첫 번째 줄 바꾸기 문자(\n)까지, 스트림의 끝까지 또는 읽은 문자 수가 n-1과 같을 때까지 문자를 읽습니다. fgets() 함수는 결과를 string에 저장하고 스트링 끝에 널(null) 문자(\0)를 추가합니다. string은 줄 바꾸기 문자를 포함합니다(읽은 경우). n이 1이면 string이 비어 있습니다.

리턴값

fgets() 함수는 성공하면 string 버퍼를 가리키는 포인터를 리턴합니다. NULL 리턴값은 오류 또는 파일의 끝 조건을 표시합니다. feof() 또는 ferror() 함수를 사용하여 NULL 값이 오류를 표시하는지 파일의 끝을 표시하는지 여부를 판별하십시오. 어떠한 경우에도 스트링 값은 변경되지 않습니다.

type=record로 열린 파일에는 fgets() 함수가 지원되지 않습니다.

errno 값을 다음으로 설정할 수 있습니다.
의미
EBADF
파일 포인터 또는 설명자가 유효하지 않습니다.
ECONVERT
변환 오류가 발생했습니다.
ENOTREAD
읽기 조작을 위해 파일이 열려 있지 않습니다.
EGETANDPUT
허용되지 않는 읽기 조작이 쓰기 조작 후에 발생했습니다.
ERECIO
레코드 I/O를 위해 파일이 열려 있습니다.
ESTDIN
stdin을 열 수 없습니다.
EIOERROR
회복 불가능한 I/O 오류가 발생했습니다.
EIORECERR
회복 가능한 I/O 오류가 발생했습니다.

이 예는 데이터 스트림에서 입력 행을 가져옵니다. 이 예는 스트림에서 MAX_LEN - 1개 문자만 또는 줄 바꾸기 문자까지 읽습니다.
#include <stdio.h>
 
#define  MAX_LEN  100
 
int main(void)
{
   FILE *stream;
   char line[MAX_LEN], *result;
 
   stream = fopen("mylib/myfile","rb");
 
   if ((result = fgets(line,MAX_LEN,stream)) != NULL)
      printf("The string is %s\n", result);
 
   if (fclose(stream))
      perror("fclose error");
}