이 가이드에서는 C 프로그래밍 언어를 사용하여 파일에서 I / O (입력 / 출력) 작업을 수행하는 방법을 배웁니다.
C 파일 I / O – 목차
1. 파일 열기
2. 파일 읽기
3. 파일 작성
4. 파일 닫기
5. 파일에 문자열 읽기 및 쓰기
6. C로 바이너리 파일 읽기 및 쓰기
각 작업을 자세히 설명하기 전에 간단한 C 프로그램을 살펴 보겠습니다.
파일을 열고 읽고 닫는 간단한 C 프로그램
h3>
위 프로그램에서 r
모드로 newfile.txt
파일을 열고 파일 내용을 읽고 콘솔에서. 각 작업을 자세히 이해할 수 있습니다.
파일 열기
fopen()
함수는 파일을 여는 데 사용됩니다.
구문 :
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
는 choice.
file_name
는 열려는 파일의 이름입니다. 여기에 “C : \\ myfiles \\ newfile.txt”와 같이 전체 경로를 지정합니다.
파일을 여는 동안 모드를 지정해야합니다. 파일을 읽는 데 사용하는 모드는 “r ”는 “읽기 전용 모드”입니다.
예 :
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
첫 번째 문자의 주소는 .
파일이 성공적으로 열렸는지 확인하는 방법
파일이 성공적으로 열리지 않으면 포인터에 NULL 값이 할당되므로 다음과 같이 논리를 작성할 수 있습니다. :
이 코드는 파일이 성공적으로 열렸는지 확인합니다. 파일이 열리지 않으면 사용자에게 오류 메시지가 표시됩니다.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
다양한 파일 열기 모드 :
파일은 fopen()
기능을 사용하여 열리 며 열 때 요구 사항에 따라 다음 모드 중 하나를 사용할 수 있습니다.
모드 “r”: 읽기 전용 모드입니다. 즉, 파일이 r 모드에서 열리면 해당 내용을 쓰고 수정할 수 없습니다. fopen()
가 파일을 성공적으로 열면 파일의 첫 번째 문자 주소를 반환하고 그렇지 않으면 NULL을 반환합니다.
모드 “w”: 쓰기입니다. 전용 모드. fopen()
함수는 지정된 파일이 존재하지 않을 때 새 파일을 만들고 파일을 열지 못하면 NULL을 반환합니다.
Mode ” a”:이 모드 사용 콘텐츠는 기존 파일의 끝에 추가 할 수 있습니다. 모드 “w”와 마찬가지로 fopen()
는 파일이 존재하지 않으면 새 파일을 생성합니다. 성공적으로 열리지 않으면 NULL을 반환합니다.
파일 포인터는 다음을 가리 킵니다. 파일의 마지막 문자 .
모드 “r +”:이 모드는 “r”모드와 동일하지만이 모드에서 열린 파일에 대해 다양한 작업을 수행 할 수 있습니다. 파일 내용을 읽고, 쓰고, 수정할 수 있습니다. “r +”모드로 열림.
파일 포인터는 파일의 첫 문자를 가리 킵니다.
모드 “w +”: 수행 할 수있는 작업을 제외하고 모드 “w”와 동일합니다. 이 모드에서는 파일을 읽고, 쓰고, 수정할 수 있습니다.
모드 “a +”: 모드 “a”와 동일; 파일의 데이터를 읽고 추가 할 수 있지만이 모드에서는 내용 수정이 허용되지 않습니다.
파일 읽기
파일을 읽으려면 먼저 파일을 열어야합니다. 예를 들어 파일을 읽기만하고 “r”모드로 열려면 파일을 열 때 선택한 모드에 따라 파일에 대해 특정 작업을 수행 할 수 있습니다.
파일을 읽는 C 프로그램
fgetc () :이 함수는 현재 포인터의 위치에서 문자를 읽고 성공적으로 읽으면 포인터를 파일의 다음 문자로 이동합니다. 포인터가 파일 끝에 도달하면 ,이 함수는 EOF (파일 끝)를 반환합니다. 프로그램에서 EOF를 사용하여 파일의 끝을 확인했습니다.
파일에 쓰기
파일을 쓰기 위해 쓰기를 지원하는 모드로 파일을 열어야합니다. 예를 들어 “r”모드에서 파일을 열면 “r”은 읽기 전용 모드이므로 파일을 쓸 수 없습니다.
예 : 작성할 C 프로그램 파일
이 프로그램은 사용자에게 문자를 입력하도록 요청하고 파일 끝에 해당 문자를 씁니다. 파일이 존재하지 않으면이 프로그램은 지정된 이름으로 파일을 생성하고 입력 문자를 파일에 씁니다.
파일 닫기
fclose(fp);
fclose () 함수는 열린 파일을 닫는 데 사용됩니다. 인수로 닫으려는 파일에 대한 포인터를 제공해야합니다.
C에서 열기, 읽기, 쓰기 및 닫기 작업을 보여주는 예제
읽기 / 쓰기 방법 (I / O) 파일의 문자열 – fgets & fputs
여기서 문자열을 파일로 읽고 쓰는 방법에 대해 설명합니다.
char *fgets(char *s, int rec_len, FILE *fpr)
s : 문자열을 저장할 문자 배열.
rec_len : 입력 레코드의 길이.
fpr : 입력 파일에 대한 포인터.
예를 들어 보겠습니다 :
C 프로그래밍에서 파일에서 문자열을 읽는 예
위의 예에서 우리는 다음과 같은 fgets 함수를 사용했습니다.
fgets(str, 10, fpr)
여기서 str은 파일에서 읽어 온 문자열을 저장하는 문자열 (문자열)을 나타냅니다.
10은 필요한 문자열의 길이입니다. 매번 읽을 수 있습니다.
fpr은 읽을 파일에 대한 포인터입니다.
왜 if (fgets (str, 10, fpr) == NULL을 논리로 사용하여 끝을 결정합니다.
위의 예에서는 파일의 끝을 알기 위해 ch == EOF를 사용했습니다. 여기서는 읽을 수있는 레코드가 더 이상 없을 때 fget이 NULL을 반환하기 때문에이 로직을 사용했습니다. .
C 프로그램 – 파일에 문자열 쓰기
int fputs ( const char * s, FILE * fpw );
char *s
– 배열 char.
FILE *fpw
– 기록 될 파일에 대한 포인터 (FILE 유형).
fputs는 두 개의 인수를 사용합니다. –
fputs(str, fpw)
str – str은 문자열이 저장되는 배열을 나타냅니다.
fpw – 레코드를 작성해야하는 출력 파일에 대한 FILE 포인터
fput에 대한 참고 사항 :
기본적으로 fputs는 각 레코드를 작성한 후 새 줄을 추가하지 않습니다. 수동으로 수행하기 위해 파일에 쓸 때마다 다음 명령문을 사용할 수 있습니다.
fputs("\n", fpw);
C FILE I / O for Binary files
지금까지 우리는 텍스트 파일에 대한 파일 작업을 배웠습니다. 파일이 바이너리 (예 : .exe 파일) 인 경우. 위의 프로그램은 바이너리 파일에 대해서는 작동하지 않지만 바이너리 파일 처리에는 약간의 변경이 있습니다. 가장 큰 차이점은 파일 이름 & 모드입니다. 예제의 도움으로 이것을 이해할 수 있습니다. 바이너리 파일 2 개가 있다고 가정 해 보겠습니다. bin1.exe & bin2.exe – bin1.exe의 내용을 bin2.exe로 복사하려고합니다.
예 : 읽기 C에서 바이너리 파일 작성 및 쓰기
참고 : 파일 열기 모드는 “r”대신 “rb”및 “wb”입니다. & “w”..