C_C++/C_라이브러리_함수

(C언어) fopen: 파일을 연다

고니자니 2023. 2. 7. 12:36
반응형

#fopen #fclose

 

#include <stdio.h>
FILE *fopen(const *filename, const char *mode);

fopen 함수는 filename으로 지정된 파일을 엽니다. 파일을 여는데 성공했으면 파일 포인터를 반환하고, 실패하면 NULL을 반환합니다.

 

mode는 다음과 같은 값을 사용합니다.

mode 설명
r Read. 읽기용으로 파일을 연다.
파일이 없으면 오류이다.
w Write. 쓰기용으로 파일을 연다.
파일을 새로 생성한다. 파일이 이미 존재하면 기존 파일에 덮어쓴다.
a Append. 추가용으로 파일을 연다.
파일이 없으면 새로 생성하고, 파일이 이미 존재하면 맨 뒤에 추가한다.
r+ 파일을 갱신하기 위해 연다. Read + Write
파일이 없으면 오류이다.
w+ 파일을 갱신하기 위해 연다. Write + Read
파일이 없으면 새로 생성한다.
a+ 파일에 추가하기 위해 파일을 연다. Append + Read
파일이 없으면 새로 생성하고, 파일이 이미 존재하면 뒤에 추가한다.

파일을 열 때, t 또는 b를 덧붙여서 열 수 있습니다. t는 텍스트 모드, b는 이진 모드를 의미하며, tb가 생략되면 전역변수 _fmode에 의해 결정됩니다. _fmodeO_BINARY이면 2진 모드로 파일을 열고, O_TEXT이면 텍스트 모드로 파일을 엽니다.

O_... 상수들은 <fcntl.h> 헤더에 정의되어 있습니다.

 

()

“r”

“rt”

“r+t”

“w+b”

 

다음 예제는 "test.txt" 파일을 "text_bak.txt"로  복사하는 예제입니다.

#define _CRT_SECURE_NO_WARNINGS  // Visual Studio
#include <stdio.h>

int main()
{
	FILE* fin, * fout;

	if ((fin = fopen("test.txt", "rt")) == NULL)
	{
		printf("파일 읽기 오류\n");
		return -1;
	}
    
	if ((fout = fopen("test_bak.txt", "wt")) == NULL)
	{
		printf("파일 쓰기 오류\n");
		return -2;
	}

	while (!feof(fin))
		fputc(fgetc(fin), fout);
	printf("파일 복사 성공\n");

	fclose(fin);
	fclose(fout);

	return 0;
}

fopen 함수

 

 

반응형