#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
int main(void)
{
FILE *fp;
char buffer[MAX];
if ((fp = fopen("lines.txt", "w")) == NULL)
{
printf("打開檔案失敗!\n");
exit(EXIT_FAILURE);
}
fputs("Line one: Hello World!\n", fp);
fputs("Line two: Hello Fishc!\n", fp);
fputs("Line three: I love Fishc.com!\n", fp);
fclose(fp);
if ((fp = fopen("lines.txt", "r")) == NULL)
{
printf("打開檔案失敗!\n");
exit(EXIT_FAILURE);
}
while (!feof(fp))
{
fgets(buffer, MAX, fp);
printf("%s", buffer);
}
return 0;
}
uj5u.com熱心網友回復:
int ch;
while (!feof(fp))
{
fgets(buffer, MAX, fp);
printf("%s", buffer);
ch = fgetc(fp);
if (ch == -1)
break;
}
“C”語言的“feof()”函式回傳的是最后一次“讀操作的內容”。多年來把“位置和內容”相混,從而造成了對這一概念的似是而非。
那么,位置和內容到底有何不同呢?舉個簡單的例子,比如有人說“你走到火車的最后一節車箱”這就是位置。而如果說“請你一直向后走,摸到鐵軌結束”這就是內容。也就是說用內容來判斷會“多走一節”。這就是完全依賴于“while(!feof(FP)){...}”進行檔案復制時,目標檔案總會比源檔案“多出一些”的原因。
在“C”檔案讀取操作時不能完全依賴于“while(!feof(FP)){...}”的判斷。
更多細節,可以查詢百度百科 feof 函式
uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
int main(void)
{
FILE *fp;
char buffer[MAX];
if ((fp = fopen("lines.txt", "w")) == NULL)
{
printf("打開檔案失敗!\n");
exit(EXIT_FAILURE);
}
fputs("Line one: Hello World!\n", fp);
fputs("Line two: Hello Fishc!\n", fp);
fputs("Line three: I love Fishc.com!\n", fp);
fclose(fp);
if ((fp = fopen("lines.txt", "r")) == NULL) {
printf("打開檔案失敗!\n");
exit(EXIT_FAILURE);
}
while (!feof(fp))
{
if (fgets(buffer, MAX, fp)== NULL)
break;
printf("%s", buffer);
}
fclose(fp);
return 0;
}
供參考~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103072.html
標籤:C語言
上一篇:新手求帶 遇到一個拒絕訪問的問題
