2012-09-13 46 views
1

我有零知識有關使用C中的文件,我想讀這個數據的fscanf讀取或保存

 
050  1100    
051  5100 

100  0005 

文件並保存到數字常量是這樣的:

PC cod IR  
\/ \/ \/  

050 --- 1 ---- 200
051 --- 5 ---- 100

Mem[PC] 
    \/ 

100 - 0005

問題是我不知道該怎麼做。我只有從讀取我的文件並將第一個數據保存到char緩衝區的書中讀取的代碼,或者至少這是我認爲它的作用,但它不會繼續處理其餘數據。

#include <stdio.h>  
int main(int argc, char **argv) 
{ 
    FILE *fp;  
    char buffer[100]; 

    fp = fopen("prueba.txt", "r"); 
    fscanf(fp, "%s", buffer); 
    printf("%s", buffer);  
    fclose(fp);  

    return 0;  
} 

,這是prueba.txt內容:

 
050  1100    
051  5100 

100  0005 

有人可以幫我嗎?

回答

-1

你現在正在做的是隻讀一個單詞,你正在使用fscanf讀取,%s讀取它看到的第一個字符串。

如果你想讀的所有單詞的文件,則必須遍歷他們像這樣:

while(feof(fp)==0){ 

fscanf(fp,"%s",buffer); 
*** Do what every action you want to do with your buffer here *** 
} 
+1

'while(!feof(fp)){read;處理; }'是一個反模式,因爲'feof'只有當你試圖讀取文件末尾時,纔會變成真,而不是當你到達文件末尾時。所以你會得到一個失敗的讀操作,代碼不準備處理。 – zwol

1

首先,忘記你曾經聽說過的fscanf。它比它值得的更麻煩。

第二關,我不知道你所說的「保存數字變成常數」的意思,但在一般情況,做這樣的用C事情的正確方法是符合fgets讀線(或getline(如果有的話)),然後使用strsepstrtoul從行中提取單個數字。

第三,在風格上來說,只有一件事情比在圓括號內部放置空格更糟糕,那就是不一致在圓括號和逗號內部和/或周圍放置空格。你會讓下一個必須閱讀此代碼的人頭疼。