作者Ctmate (City*Mate)
看板C_and_CPP
標題[問題] 讀檔時如何判斷讀完(空白)
時間Sun Dec 27 04:09:42 2009
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
→ joefaq:fscanf會return讀到的個數... 12/27 04:20
推 carlcarl:scanf是EOF fgets是NULL 12/27 04:37
推 yauhh:有一題基本程式題是wc,word count.可能可用同樣的想法,假想 12/27 09:12
→ yauhh:任何空白字元('\n',' ','\t')夾在文字之間,該怎麼設置狀態. 12/27 09:13
→ netsphere:EOF? 12/27 11:22
推 Yshuan:for(i=0;scanf("%d", &a[i])!=EOF;i++); 12/27 15:19
→ Yshuan:另外 fgets不會有\n 他是抓整行 然後補\0 12/27 15:20
→ iamivers0n:如果buffer沒滿的話會有\n喔... 12/27 16:46