Re: [計程] feof的問題...

看板b98902HW作者 ( )時間14年前 (2010/02/07 16:04), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《peteranny (TIN)》之銘言: : 我想問一個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 讀"1 2 3"這個檔案 第三次的fscanf(data,"%d",&i);執行完時 data會指到3的後面那一個位元 也就是到檔案的結尾了 但是在"1 2 3\n"中 第三次的fscanf(data,"%d",&i);執行完時 data是指到3後面的換行 也就是還沒到eof 就會執行第四次的fscanf(data,"%d",&i); 他讀不到東西,所以i的值就沒有被改變 還是3 你如果只讀數字的話可以改成 int i; while(fscanf(data,"%d",&i)==1){ printf("%d ",i); } //fscanf的return value是成功讀到幾個數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.202.99

02/07 17:36, , 1F
拉球大人!!m(>_<)m原來如此謝謝@@
02/07 17:36, 1F
文章代碼(AID): #1BRdGNez (b98902HW)
討論串 (同標題文章)
文章代碼(AID): #1BRdGNez (b98902HW)