fgets() — 스트링 읽기
형식
#include <stdio.h>
char *fgets (char *string, int n, FILE *stream);
언어 레벨
ANSI
스레드세이프
예
설명
fgets()
함수는 현재 stream 위치에서 첫 번째 줄 바꾸기 문자 (\n) 까지, 스트림의 끝까지 또는 읽은 문자 수가 n-1과 같을 때까지 (둘 중 먼저 오는 것까지) 문자를 읽습니다. fgets()
함수는 결과를 string 에 저장하고 문자열 끝에 널 문자 (\0) 를 추가합니다. string은
줄 바꾸기 문자를 포함합니다(읽은 경우). n이 1이면
string이 비어 있습니다.
리턴값
fgets()
함수는 성공한 경우 string 버퍼에 대한 포인터를 리턴합니다. NULL 리턴값은
오류 또는 파일의 끝 조건을 표시합니다. feof()
또는 ferror()
함수를 사용하여 NULL 값이 파일의 오류 또는 끝을 표시하는지 여부를 판별하십시오. 어떠한 경우에도 스트링 값은 변경되지 않습니다.
fgets()
함수는 type=record로 열린 파일에 대해 지원되지 않습니다.
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");
}