看板 b98902HW 關於我們 聯絡資訊
※ 引述《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
peteranny:拉球大人!!m(>_<)m原來如此謝謝@@ 02/07 17:36