std:: fgets
|
헤더 파일에 정의됨
<cstdio>
|
||
|
char
*
fgets
(
char
*
str,
int
count,
std::
FILE
*
stream
)
;
|
||
주어진 파일 스트림에서 최대 count - 1 개의 문자를 읽어 str 가 가리키는 문자 배열에 저장합니다. 파싱은 새 줄 문자를 찾은 경우(이 경우 str 에 해당 새 줄 문자가 포함됨) 또는 파일 끝에 도달한 경우 중단됩니다. 바이트가 읽히고 오류가 발생하지 않으면, str 에 기록된 마지막 문자 바로 다음 위치에 널 문자를 기록합니다.
목차 |
매개변수
| str | - | char 배열의 요소를 가리키는 포인터 |
| count | - | 최대 작성 문자 수 (일반적으로 str 의 길이) |
| stream | - | 데이터를 읽어올 파일 스트림 |
반환값
str 성공 시, 실패 시 널 포인터.
파일 끝 조건이 발생하면, eof 표시자를 stream 에 설정합니다 ( std::feof() 참조). 이는 읽은 바이트가 없을 때에만 실패로 간주되며, 이 경우 널 포인터가 반환되고 str 이 가리키는 배열의 내용은 변경되지 않습니다 (즉, 첫 번째 바이트가 널 문자로 덮어쓰여지지 않습니다).
만약 실패가 다른 오류로 인해 발생한 경우, stream 에 error 지시자를 설정합니다( std::ferror() 참조). str 이 가리키는 배열의 내용은 불확정적입니다(널 종료되지 않았을 수도 있습니다).
참고 사항
POSIX는 추가적으로 요구합니다
,
fgets
가 파일 끝 조건 이외의 오류를 만날 경우
errno
를 설정하도록 합니다.
표준 명세는 불명확하지만 , count <= 1 인 경우 일반적인 구현체들은
- 만약 count < 1 이면, 아무 작업도 수행하지 않고 오류를 보고합니다,
- 만약 count == 1 이면,
-
- 일부 구현체는 아무 작업도 수행하지 않고 오류를 보고합니다,
- 다른 구현체는 아무것도 읽지 않고 str [ 0 ] 에 0을 저장하고 성공을 보고합니다.
예제
#include <cstdio> #include <cstdlib> #include <iomanip> #include <iostream> #include <span> void dump(std::span<const char> buf, std::size_t offset) { std::cout << std::dec; for (char ch : buf) std::cout << (ch >= ' ' ? ch : '.'), offset--; std::cout << std::string(offset, ' ') << std::hex << std::setfill('0') << std::uppercase; for (unsigned ch : buf) std::cout << std::setw(2) << ch << ' '; std::cout << std::dec << '\n'; } int main() { std::FILE* tmpf = std::tmpfile(); std::fputs("Alan Turing\n", tmpf); std::fputs("John von Neumann\n", tmpf); std::fputs("Alonzo Church\n", tmpf); std::rewind(tmpf); for (char buf[8]; std::fgets(buf, sizeof buf, tmpf) != nullptr;) dump(buf, 10); }
출력:
Alan Tu. 41 6C 61 6E 20 54 75 00 ring..u. 72 69 6E 67 0A 00 75 00 John vo. 4A 6F 68 6E 20 76 6F 00 n Neuma. 6E 20 4E 65 75 6D 61 00 nn..uma. 6E 6E 0A 00 75 6D 61 00 Alonzo . 41 6C 6F 6E 7A 6F 20 00 Church.. 43 68 75 72 63 68 0A 00
참고 항목
|
표준 입력, 파일 스트림 또는 버퍼로부터 형식화된 입력을 읽어들임
(함수) |
|
|
(C++11에서 사용 중단됨)
(C++14에서 제거됨)
|
표준 입력으로부터 문자 문자열을 읽어들임
(함수) |
|
파일 스트림에 문자 문자열을 기록함
(함수) |
|
|
C 문서
for
fgets
|
|