FGETS(3)

명칭
fgets, gets - 스트림로부터 행을 취득

서식
<stdio.h> char * fgets(char *str, int size, FILE *stream) char * gets(char *str)

해설
fgets() 함수는, 최대로 size 그리고 지정된 캐릭터수부터 1 만 적은 수의 캐릭터를 stream (으)로부터 읽어들여, 캐릭터 라인 str 에 보존합니다. 독포함은, 개행 캐릭터가 발견되거나 파일의 종료 혹은 에러가 발견되거나 했을 경우에 정지합니다. 개행 캐릭터는, 존재하고 있으면 보관 유지됩니다. 임의의 캐릭터를 읽어들여 에러가 발생하지 않았던 경우, 캐릭터 라인의 마지막에는 ‘\0’ 캐릭터가 추가됩니다.

gets() 함수는 fgets() 함수로 size (을)를 무한하게 해, stdin (을)를 stream (으)로 한 것과 등가입니다만, 캐릭터 라인중에서 개행 캐릭터가 보존되지 않는 (개행 캐릭터가 존재했을 경우) 점이 다릅니다. 입력행이 존재하는 경우, 그것이 충분히 짧게 캐릭터 라인에 완전히 해결된다 일을 프로텍션하는 것은 호출측의 책임입니다.

반환값
정상 종료하면(자), fgets() (와)과 gets() (은)는 캐릭터 라인의 포인터를 되돌립니다. 캐릭터를 읽어들이기 전에 파일의 종료에 이르면(자), NULL 하지만 되돌려집니다. 이 경우, 버퍼의 내용은 변화하지 않습니다. 에러가 발생하면(자) NULL 하지만 되돌려져 버퍼의 내용은 부정이 됩니다. fgets() 함수와 gets() 함수는 파일의 종료와 에러를 구별하지 않습니다. 파일의 종료인가 에러인지를 판단하려면 , 호출측이 feof(3) (와)과 ferror(3) (을)를 사용하지 않으면 안됩니다.

에러

[EBADF]
    지정되었다 stream 하지만, 독 붐비어 가능한 스트림이 아닙니다.

fgets() 함수가 에러가 되면(자), routine fflush(3), fstat(2), read(2), malloc(3) 용으로 지정된 에러중 한쪽이 errno (으)로 설정되는 경우가 있습니다.

gets() 함수가 에러가 되면(자), routine getchar(3) 용으로 지정된 에러가 errno (으)로 설정되는 경우가 있습니다.

관련 항목
feof(3), ferror(3), fgetln(3)

표준
fgets() 함수와 gets() 함수는, isoC 에 적합하고 있습니다.

버그
통상, 다음의 입력행이 있는 임의의 길이보다 짧은 일을 프로텍션하는 것은 불가능하고, 또 입력 버퍼를 오버플로우 하면(자) 거의 반드시 보안 위반이 되기 (위해)때문에, 프로그램에서는 gets() (을)를 절대로 사용하지 말아 주세요. gets() (은)는, isoC 에 적합하기 위해(때문에)인 만큼 존재하고 있습니다.