[問題] 讀檔時如何判斷讀完(空白)

看板C_and_CPP作者 (City*Mate)時間16年前 (2009/12/27 04:09), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串1/1
C CODE 我有一個檔案要讀... 假設如下: 5 10 15 20 43 26 11 我要怎麼判斷已經把所以數字都讀完了? 目前我的方法是 FILE *fr1=NULL; fscanf(fr1 , "%d" ,&data); while(data != NULL) { do somthing... fscanf(fr1 , "%d" ,&data); } 很明顯的,用這個方法data最後會一直等於最後一個數字,也就是11 我不知道要怎麼樣才能讓他判定已經做完了,所以會一直在裡面loop 我還有用另一種方法是用fgets,然後判定data[0]這是不是'\n' 再用atoi去轉為int,不過似乎還是會卡在最後一個數字.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.249.109

12/27 04:20, , 1F
fscanf會return讀到的個數...
12/27 04:20, 1F

12/27 04:37, , 2F
scanf是EOF fgets是NULL
12/27 04:37, 2F

12/27 09:12, , 3F
有一題基本程式題是wc,word count.可能可用同樣的想法,假想
12/27 09:12, 3F

12/27 09:13, , 4F
任何空白字元('\n',' ','\t')夾在文字之間,該怎麼設置狀態.
12/27 09:13, 4F

12/27 11:22, , 5F
EOF?
12/27 11:22, 5F

12/27 15:19, , 6F
for(i=0;scanf("%d", &a[i])!=EOF;i++);
12/27 15:19, 6F

12/27 15:20, , 7F
另外 fgets不會有\n 他是抓整行 然後補\0
12/27 15:20, 7F

12/27 16:46, , 8F
如果buffer沒滿的話會有\n喔...
12/27 16:46, 8F
文章代碼(AID): #1BDcsAsk (C_and_CPP)