2015-06-20 96 views
0

我想打開一個文本文件並將浮點值保存到特定的內存地址以在彙編程序中使用它們。 我的問題是,我有一個限制值的文本文件格式:C:將文本文件中的值保存到內存字段

if(sscanf(line,"%f mm %f mm", 
    &data1[linesread], &data2[linesread]) != 2) 
{ 
    fprintf(stderr, "Error in line: %s\n",line); 
    fprintf(stderr, "Aborted."); 
    break; 
} 

是什麼%f mm %f mmsscanf()立場?

%f意味着該行的第一個和第二個值必須是浮點值,但我不明白「mm」的含義。

當我嘗試格式化這樣的一行改爲:

5.0 2.0 

我總是得到:

Read: 5.0 2.0 
Error in line: 5.0 2.0 

Aborted. 
+3

輸入字符串應該像:'42.0 mm 23.4 mm'(每個值/單位之間有兩個空格)。 –

+1

空格的數量並不重要,但「mm」當然應該在那裏。 – Jester

+0

請注意,在編寫的代碼中,您將永遠不會發現第二個「mm」是否不存在,但第一個「mm」必須存在。由於格式字符串中的空格表示數據字符串中的'可選空白',因此該格式的有效輸入字符串可能爲'999mm9'或'99.9 mm 10.10 mm'或甚至'99.999999999999999999999999999999E-99 mm 0xA4P-9 Zanzibar '(第二個數字字符串是一個十六進制浮點數值,相當於'0.3203125'),這對每個人都是直觀明瞭的;好吧 - 我欺騙並編寫了一個程序來查明這個值是多少)。 –

回答

0

也許你可以試試這個

if(sscanf(line, "%f %f", &data1p[linesread], &data2[linesread]) != 2) 
0

無論你的代碼,輸入文件需要同意mm是否應該存在。

正如Jurica所說,從代碼中移除兩個mm。或者,您可以嘗試保羅的建議,在您的輸入文件中添加兩個mm。正確的解決方案取決於輸入文件的格式限制。

我的猜測是毫米意味着毫米,這可能是您的數據的單位。