2011-07-18 56 views
0

我正在研究C代碼,以便從輸入文件中讀取三列數字,然後用獲得的數字進行基本數學計算。我的輸入文件看起來像:閱讀欄

155.4996 38.0078 7.65

93.9968 44.9926 7.68

我目前試圖分開使用的sscanf列。爲了實現這一點,我試圖讀取列中的內容,並將第三列輸出到輸出文件。下面是我現在所擁有的:

FILE * fp; 
FILE * fp2; 
char *string; 
char out[2000]; 
char read[1000]; 
int column1, column2, column3; 

strcpy(read, "casecent"); 
strcpy(out, "Diff"); 

fp = fopen(read, "r"); 
fp2 = fopen(out, "w+"); 

while (!feof(fp)) 
{ 
    fgets(string, 1000, fp); 
    sscanf(string, "%d %d %d", &column1, &column2, &column3); 
    fprintf(fp2,"%d\n", column3); 

} 

我目前得到的零輸出文件,而不是數字。我敢肯定,我只是缺少一些小而笨的東西,但如果你能幫助我,那將是非常感謝。

回答

1

對列變量的數據類型使用floatdouble。然後在sscanf的格式字符串中分別使用%f%lf,具體取決於您選擇的數據類型。

如果你想存儲或打印值爲整數,你仍然必須先讀取它們作爲浮動或首先加倍,然後轉換。

+0

太棒了非常感謝你!一個快速跟進問題,你能幫我弄清楚爲什麼它正在讀取和打印輸入文件的最後一行兩次? –

+0

下面是一個非常好的解釋和修復:http://www.gidnetwork.com/b-58.html –