Namespaces
Variants

fgets

From cppreference.net
< c ‎ | io
헤더 파일에 정의됨 <stdio.h>
char * fgets ( char * str, int count, FILE * stream ) ;
(C99 이전)
char * fgets ( char * restrict str, int count, FILE * restrict stream ) ;
(C99 이후)

주어진 파일 스트림에서 최대 count - 1 개의 문자를 읽어서 str 가 가리키는 문자 배열에 저장합니다. 파싱은 개행 문자를 발견한 경우(이때 str 에는 해당 개행 문자가 포함됨) 또는 파일 끝에 도달한 경우 중단됩니다. 바이트가 읽히고 오류가 발생하지 않으면, str 에 기록된 마지막 문자 바로 다음 위치에 null 문자를 씁니다.

목차

매개변수

str - char 배열의 요소를 가리키는 포인터
count - 최대 작성 문자 수 (일반적으로 str 의 길이)
stream - 데이터를 읽어올 파일 스트림

반환값

str 성공 시, 실패 시 null 포인터.

파일 끝 조건이 발생하면, eof 표시자를 stream 에 설정합니다 ( feof() 참조). 이는 바이트를 전혀 읽지 못하게 하는 경우에만 실패로 간주되며, 이 경우 널 포인터가 반환되고 str 이 가리키는 배열의 내용은 변경되지 않습니다 (즉, 첫 번째 바이트가 널 문자로 덮어쓰여지지 않습니다).

만약 실패가 다른 오류로 인해 발생한 경우, error 지시자를 설정합니다 ( ferror() 참조). stream 에 대해. str 이 가리키는 배열의 내용은 불확실합니다 (널 종료되지 않았을 수도 있습니다).

참고 사항

POSIX additionally requires that fgets sets errno if a read error occurs.

표준 명세서는 명확하지 않지만 count <= 1 인 경우, 일반적인 구현체들은

  • 만약 count < 1 이면, 아무 작업도 수행하지 않고 오류를 보고합니다,
  • 만약 count == 1 이면,
  • 일부 구현체는 아무 작업도 수행하지 않고 오류를 보고합니다,
  • 다른 구현체는 아무것도 읽지 않고 str [ 0 ] 에 0을 저장하고 성공을 보고합니다.

예제

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE* tmpf = tmpfile();
    fputs("Alan Turing\n", tmpf);
    fputs("John von Neumann\n", tmpf);
    fputs("Alonzo Church\n", tmpf);
    rewind(tmpf);
    char buf[8];
    while (fgets(buf, sizeof buf, tmpf) != NULL)
          printf("\"%s\"\n", buf);
    if (feof(tmpf))
       puts("End of file reached");
}

출력:

"Alan Tu"
"ring
"
"John vo"
"n Neuma"
"nn
"
"Alonzo "
"Church
"
End of file reached

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.21.7.2 fgets 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.21.7.2 fgets 함수 (p: 241)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.21.7.2 fgets 함수 (p: 331)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.19.7.2 fgets 함수 (p: 296)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.9.7.2 fgets 함수

참고 항목

표준 입력, 파일 스트림 또는 버퍼로부터 형식화된 입력을 읽음
(함수)
(C11에서 제거됨) (C11)
표준 입력으로부터 문자 문자열을 읽음
(함수)
파일 스트림에 문자 문자열을 씀
(함수)
구분자/줄 끝까지 스트림에서 자동으로 크기가 조정되는 버퍼로 읽음
(함수)