1. Panimula
Sa pag-program sa C, ang paghawak sa mga operasyon ng file at standard input ay mahalaga. Sa mga ito, ang EOF (End of File) ay lumilitaw bilang isang espesyal na halaga na nagpapahiwatig ng katapusan ng isang file o input. Kung hindi mo maunawaan nang maayos ang EOF, maaari kang hindi hawakan nang tama ang katapusan ng file, na humahantong sa hindi inaasahang pag-uugali ng programa. Sa artikulong ito, ipapaliwanag namin ang kahulugan ng EOF, kung paano ito gamitin, at mahahalagang punto na dapat tandaan kapag nagtatrabaho dito.
2. Kahulugan at Papel ng EOF
Ang EOF (End of File) ay isang espesyal na halaga na ginagamit sa C upang ipahiwatig ang katapusan ng isang file o isang error, at ito ay nai-define sa standard library na stdio.h. Espesipiko, ang EOF ay may halagang -1. Kapag nagtatrabaho sa mga file o input streams, maaari mong gamitin ang EOF upang suriin kung lahat ng data ay nabasa na.
Halimbawa, ang mga function na getchar() at fgetc() ay nagbabalik ng EOF kapag naabot nila ang katapusan ng file. Ito ay nagbibigay-daan sa iyong programa na makilala ang katapusan ng data at hawakan ito nang angkop.
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
fclose(file);
return 0;
}
Ang kodeng ito ay nagbabasa ng file nang isang karakter sa isang pagkakataon at nagpi-print ng bawat karakter hanggang maabot ang EOF.
3. Halimbawa ng Paggamit ng EOF: getchar() at feof()
Ang EOF ay karaniwang ginagamit kasama ang mga input function tulad ng getchar() at fgetc(). Sa ibaba ay isang tipikal na halimbawa gamit ang getchar() kasama ang EOF.
#include <stdio.h>
int main() {
int c;
// Get characters from standard input until EOF is returned
while ((c = getchar()) != EOF) {
putchar(c);
}
return 0;
}
Ang programang ito ay nagbabasa ng isang karakter sa isang pagkakataon mula sa standard input at patuloy na nag-o-output ng bawat karakter hanggang ipasok ang EOF. Upang ipasok ang EOF mula sa keyboard, gumamit ng Ctrl + D (Linux o macOS) o Ctrl + Z (Windows).
Ang function na feof() ay kapaki-pakinabang din para sa pagsusuri kung naabot na ang katapusan ng file. Ang function na ito ay nagbabalik ng true (1) kung naabot ang katapusan ng file, o false (0) kung hindi.
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
if (file == NULL) {
perror("Cannot open file");
return 1;
}
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
if (feof(file)) {
printf("nEnd of file reached.n");
}
fclose(file);
return 0;
}
Ang kodeng ito ay gumagamit ng feof() pagkatapos maabot ang EOF upang suriin kung tuluyang nabasa ang file.
4. Mahahalagang Tala Kapag Humahawak ng EOF
Isang mahalagang punto kapag nagtatrabaho sa EOF ay ang pagkakaiba sa pagitan ng char at int types. Ang mga function tulad ng getchar() at fgetc() ay nagbabalik ng EOF bilang -1, kaya ang kanilang return type ay int. Kung ikaw ay mag-assign ng return value sa isang char variable, maaari itong magdulot ng sign error at magresulta sa hindi angkop na paghawak ng EOF.
Halimbawa, ang pag-assign ng EOF sa isang char variable ay maaaring i-convert ito sa 0xFF. Ito ay maaaring pigilan ang katapusan ng file mula sa pagiging kinikilala nang tama, na maaaring humantong sa hindi inaasahang pag-uugali.
Kaya, inirerekomenda na gumamit ng int type kapag nagtatrabaho sa EOF. Narito ang isang halimbawa ng tama na pagsusuri para sa EOF gamit ang int type:
#include <stdio.h>
int main() {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
return 0;
}
Ang kodeng ito ay tama na tumutukoy sa EOF sa pamamagitan ng pagtanggap ng return value bilang int.

5. Advanced na Halimbawa: Pagbibilang ng Mga Linya gamit ang EOF
Bilang isang advanced na paggamit ng EOF, tingnan natin ang isang programa na nagbibilang ng bilang ng mga linya sa isang file. Ang programang ito ay nagbabasa ng file karakter sa karakter hanggang EOF, at pinapataas ang bilang tuwing natatagpuan ang isang newline character.
#include <stdio.h>
int main() {
FILE *file = fopen("sample.txt", "r");
int c;
int line_count = 0;
if (file == NULL) {
perror("Cannot open file");
return 1;
}
while ((c = fgetc(file)) != EOF) {
if (c == 'n') {
line_count++;
}
}
printf("Number of lines: %dn", line_count);
fclose(file);
return 0;
}
This program counts the newline characters in a file and outputs the final line count. It’s a typical example of using EOF to detect the end of a file and terminate processing.
6. Konklusyon
Ang EOF ay may mahalagang papel sa C para sa pagtuklas ng katapusan ng mga file o standard input. Sa pamamagitan ng pag-unawa kung paano gamitin nang tama ang EOF, makakalikha ka ng mas mapagkakatiwalaang mga programa sa paghawak ng file at input. Tandaan din na ang paggamit ng uri na int sa halip na char ay tumutulong upang matukoy ang EOF nang tumpak.
Ang artikulong ito ay nagbigay ng komprehensibong paliwanag tungkol sa EOF, mula sa mga batayan hanggang sa mga praktikal na halimbawa at advanced na paggamit. Kapag nagtatrabaho sa mga operasyon ng file sa C, malayang gamitin ito bilang sanggunian.




