Re: [計程] feof的問題...
※ 引述《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
02/07 17:36, 1F
討論串 (同標題文章)