C의 파일 끝(EOF)
C에서 EOF를 표현하는 주제가 이 기사의 초점이 될 것입니다.
C의 End of File
(EOF)
End of File
으로 알려진 상황은 데이터 소스에서 읽을 수 있는 데이터가 더 이상 없을 때 컴퓨터의 운영 체제에서 발생합니다. 데이터 소스는 종종 파일
또는 스트림
이라고 합니다.
End of File (EOF)
메시지가 표시되면 입력이 완료된 것입니다.
내용을 입력한 후 Ctrl 및 Z 키를 동시에 눌러 텍스트를 종료할 수 있습니다. 이것은 파일이 결론에 도달했으며 더 이상 읽을 것이 없다는 신호입니다.
C에서 파일 끝에 도달하면 getc()
함수는 EOF
를 반환합니다. getc()
는 성공하지 못한 경우 End of File(EOF)
도 반환합니다.
따라서 getc()
에서 제공한 값을 EOF
와 비교하여 파일이 끝에 도달했는지 여부를 확인하는 것만으로는 충분하지 않습니다. C는 이 문제를 해결하기 위해 feof()
함수를 제공합니다.
이 함수는 파일 끝에 도달한 경우에만 0보다 큰 값을 반환합니다. 그렇지 않으면 0
을 반환합니다.
C에서 파일에 대한 작업
대부분의 프로그램은 프로그램에서 검색된 정보를 저장하기 위해 개발되었습니다. 이러한 방법 중 하나는 획득한 정보를 파일로 저장하는 것입니다.
다음은 파일에서 수행할 수 있는 다양한 작업 목록입니다.
파일 생성
fopen
프로그램을 사용하고 a
, a+
, w
, w++
와 같은 특성을 지정하면 새 파일을 생성할 수 있습니다.
파일 열기
fopen
기능과 적절한 액세스 모드는 파일이 열릴 때마다 사용됩니다. 다음은 가장 자주 사용되는 몇 가지 파일 액세스 모드입니다.
-
a
를 누르면 파일이 검색됩니다. 파일이 성공적으로 열리면fopen()
함수는 파일을 메모리에 로드하고 현재 읽고 있는 문자에 연결하는 포인터를 만듭니다.파일이 이미 존재하지 않으면 새 파일이 생성됩니다. 파일을 열 수 없는 경우
Null
을 반환합니다. -
w
문자는 파일을 검색합니다. 파일이 이미 존재하는 경우 파일의 내용이 다시 작성됩니다.파일이 이미 존재하지 않으면 새 파일이 생성됩니다. 파일을 열 수 없는 경우
Null
이 반환됩니다.
파일에서 수행해야 하는 활동을 수행하기 위해 파일 포인터
로 알려진 특수 포인터가 사용되며 선언은 다음과 같습니다.
FILE *fp;
따라서 다음을 사용하여 파일을 열 수 있습니다.
fp = fopen("Shanii.txt", "w");
여기서 Shanii.txt
는 열려는 파일이고 두 번째 매개변수는 파일 모드입니다.
파일 읽기
fscanf
및 fgets
기능은 파일에 대한 읽기 작업을 수행하는 데 사용됩니다. 이 두 방법 모두 scanf
및 gets
와 동일한 작업을 수행했지만 file pointer
라는 추가 인수를 고려했습니다.
정보를 구성하려는 방법에 따라 파일을 문자별로 또는 라인별로 읽을 수 있습니다. 다음은 파일을 읽는 데 필요한 코드의 예입니다.
FILE* fp;
fp = fopen("shanii.txt", "r");
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
파일 쓰기
파일 읽기에 사용되는 fprintf
및 fputs
함수는 파일 쓰기에도 사용할 수 있으며 프로세스는 파일 읽기와 매우 유사합니다. 파일에 쓸 때 사용할 명령은 다음과 같습니다.
FILE *fp;
fp = fopen("shanii.txt", "w");
fprintf(fp, "%s %s %s %d", "I", "am", "Zeeshan", 2000);
파일 닫기
모든 작업이 성공적으로 완료된 후에는 항상 파일을 닫아야 합니다. 파일을 성공적으로 닫으려면 fclose
기능을 사용해야 합니다.
파일을 닫는 코드는 다음과 같습니다.
FILE *fp;
fp = fopen("fileName.txt", "w");
fprintf(fp, "%s %s %s %d", "I", "am", "Zeeshan", 2000);
fclose(fp);
C에서 EOF의 예
예를 들어, shanii.txt
라는 텍스트 파일의 내용을 화면에 표시하려면 다음 C 코드를 보십시오.
getc()
의 값은 먼저 EOF
와 비교됩니다.
int charac = getc(filepointer);
while (charac != EOF) {
putchar(charac);
charac = getc(filepointer);
}
그런 다음 feof()
를 사용하여 두 번째 검사를 수행합니다. 이 검사는 파일 끝에 도달한 경우 프로그램이 Program has reached End-of-file
만 출력하는지 확인합니다.
if (feof(filepointer)) {
printf("\n Program has reached End-of-file");
}
그렇지 않으면 프로그램에 There was a problem
가 표시됩니다.
소스 코드:
#include <stdio.h>
int main() {
FILE *filepointer = fopen("shanii.txt", "r");
int charac = getc(filepointer);
while (charac != EOF) {
putchar(charac);
charac = getc(filepointer);
}
if (feof(filepointer)) {
printf("\n Program has reached End-of-file");
} else {
printf("\n There was a problem");
}
fclose(filepointer);
getchar();
return 0;
}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn