C:将文本文件中的值保存到内存字段

C:将文本文件中的值保存到内存字段

问题描述:

我想打开一个文本文件并将浮点值保存到特定的内存地址以在汇编程序中使用它们。 我的问题是,我有一个限制值的文本文件格式: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'),这对每个人都是直观明了的;好吧 - 我欺骗并编写了一个程序来查明这个值是多少)。 –

也许你可以试试这个

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

无论你的代码,输入文件需要同意mm是否应该存在。

正如Jurica所说,从代码中移除两个mm。或者,您可以尝试保罗的建议,在您的输入文件中添加两个mm。正确的解决方案取决于输入文件的格式限制。

我的猜测是毫米意味着毫米,这可能是您的数据的单位。