看板 b98902HW 關於我們 聯絡資訊
我想問一個c的問題... 我寫了一個很簡單的程式 #include<stdio.h> #include<stdlib.h> int main(){ FILE*data=fopen("test.txt","r"); while(!feof(data)){ int i; fscanf(data,"%d",&i); printf("%d ",i); } system("pause"); return 0; } ((也就是從test.txt讀一個字 印一個字的意思 如果test.txt的內容是 1 2 3 那麼印出就是 1 2 3 很正常沒錯 可是如果test.txt的內容是 1 2 3 ((這裡有多一行換行 那麼印出來就是 1 2 3 3 啊這是三小!!=口=為什麼?? 請強者幫忙解答...因為小弟最近幫人寫程式遇到這個問題囧 是只要檔案的最後有空白行就會有這種bug嗎??不然要怎麼解決?? 謝謝回答的人!!Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.71.78.252
telgniw:把feof判斷改到fscanf和printf中間 02/07 11:04
peteranny:int i; 02/07 11:53
peteranny:fscanf("%d",&i); 02/07 11:53
peteranny:while(!feof(data)){ 02/07 11:53
peteranny: printf("%d ",i); 02/07 11:53
peteranny: fscanf("%d",&i); 02/07 11:54
peteranny: } 02/07 11:54
peteranny:是這樣嗎?? 02/07 11:54
peteranny:可是這樣會只印出 1 2 = = 02/07 11:54
LPH66:路人回答: 要記得feof是在讀不到資料之後才會是true 02/07 12:46
andy74139:while後面再加一個print就會是1 2 3 了 02/07 17:34
peteranny:這樣子改還是跟我原本的方式一樣啊 02/08 09:13
andy74139:我是指while的外面@@ 02/08 09:36
peteranny:對呀...如果test是"1 2 3\n"印出來還是1 2 3 3 02/08 21:52
LoganChien:while (1) { 02/27 11:09
LoganChien: scanf("%d", &i); 02/27 11:09
LoganChien: if (feof(FILEPTR)) { break; } 02/27 11:10
LoganChien: printf("%d", i); 02/27 11:10
LoganChien:} 02/27 11:10
peteranny:上面這個結果好像也是一樣的...txt是"1 2 3"就印成"1 2" 02/27 19:17