std:: fopen
|
헤더 파일에 정의됨
<cstdio>
|
||
|
std::
FILE
*
fopen
(
const
char
*
filename,
const
char
*
mode
)
;
|
||
filename 으로 지정된 파일을 열고 해당 파일과 연관된 파일 스트림을 반환합니다. mode 는 파일 접근 모드를 결정하는 데 사용됩니다.
목차 |
매개변수
| filename | - | 파일 스트림과 연결할 파일 이름 |
| mode | - | 파일 접근 모드 를 결정하는 null-terminated 문자열 |
파일 접근 플래그
|
파일 접근
모드 문자열 |
의미 | 설명 |
파일이 이미 존재할 때
동작 |
파일이 존재하지 않을 때
동작 |
|---|---|---|---|---|
| "r" | 읽기 | 파일을 읽기용으로 열기 | 시작 부분부터 읽기 | NULL 반환 및 오류 설정 |
| "w" | 쓰기 | 파일을 쓰기용으로 생성 | 내용 파괴 | 새 파일 생성 |
| "a" | 추가 | 파일에 추가하기 | 끝부분에 쓰기 | 새 파일 생성 |
| "r+" | 확장 읽기 | 파일을 읽기/쓰기용으로 열기 | 시작 부분부터 읽기 | NULL 반환 및 오류 설정 |
| "w+" | 확장 쓰기 | 파일을 읽기/쓰기용으로 생성 | 내용 파괴 | 새 파일 생성 |
| "a+" | 확장 추가 | 파일을 읽기/쓰기용으로 열기 | 끝부분에 쓰기 | 새 파일 생성 |
|
파일 접근 모드 플래그
"b"
를 선택적으로 지정하여 파일을
바이너리 모드
로 열 수 있습니다. 이 플래그는 POSIX 시스템에서는 아무런 효과가 없지만, Windows와 같은 시스템에서는
'
\n
'
와
'
\x1A
'
의 특별한 처리를 비활성화합니다.
추가 파일 접근 모드에서는 파일 위치 표시자의 현재 위치와 관계없이 데이터가 파일의 끝에 기록됩니다. |
||||
| 파일 접근 모드 플래그 "x" 를 선택적으로 "w" 또는 "w+" 지정자에 추가할 수 있습니다. 이 플래그는 파일이 존재할 경우 덮어쓰는 대신 함수가 실패하도록 강제합니다. (C++17) | ||||
| 모드가 위에 나열된 문자열 중 하나가 아닌 경우 동작은 정의되지 않습니다. 일부 구현에서는 추가로 지원되는 모드를 정의합니다 (예: Windows) . | ||||
반환값
성공 시, 열린 파일 스트림을 제어하는 객체에 대한 포인터를 반환하며, eof 비트와 error 비트가 모두 지워진 상태입니다. filename 이 대화형 장치를 참조하지 않는 한 스트림은 완전히 버퍼링됩니다.
오류 발생 시, 널 포인터를 반환합니다. POSIX에서는 이 경우 errno 가 설정되어야 합니다.
참고 사항
filename 의 형식은 구현에 따라 정의되며, 반드시 파일을 참조하지 않을 수 있습니다(예: 파일 시스템 API를 통해 접근 가능한 콘솔이나 다른 장치일 수 있음). 이를 지원하는 플랫폼에서는 filename 에 절대 또는 상대 파일 시스템 경로가 포함될 수 있습니다.
이식 가능한 디렉토리 및 파일 명명을 위해서는 C++ filesystem library 또는 boost.filesystem 을 참조하십시오.
예제
#include <cstdio> #include <cstdlib> int main() { int is_ok = EXIT_FAILURE; FILE* fp = std::fopen("/tmp/test.txt", "w+"); if (!fp) { std::perror("File opening failed"); return is_ok; } int c; // 참고: char가 아닌 int, EOF를 처리하기 위해 필요함 while ((c = std::fgetc(fp)) != EOF) // 표준 C I/O 파일 읽기 루프 std::putchar(c); if (std::ferror(fp)) std::puts("I/O error when reading"); else if (std::feof(fp)) { std::puts("End of file reached successfully"); is_ok = EXIT_SUCCESS; } std::fclose(fp); return is_ok; }
출력:
End of file reached successfully
참고 항목
|
파일을 닫음
(함수) |
|
|
출력 스트림을 실제 파일과 동기화
(함수) |
|
|
기존 스트림을 다른 이름으로 열기
(함수) |
|
|
C 문서
for
fopen
|
|