【发布时间】:2015-09-06 12:17:09
【问题描述】:
我正在尝试打开一个文本文件并将浮点值保存到特定的内存地址,以便在汇编程序中使用它们。 我的问题是我对文本文件中值的格式有限制:
if(sscanf(line,"%f mm %f mm",
&data1[linesread], &data2[linesread]) != 2)
{
fprintf(stderr, "Error in line: %s\n",line);
fprintf(stderr, "Aborted.");
break;
}
sscanf() 中的%f mm %f mm 代表什么?
%f 表示该行的第一个和第二个值必须是浮点值,但我不明白“mm”是什么意思。
当我尝试读取格式如下的行时:
5.0 2.0
我总是得到:
Read: 5.0 2.0
Error in line: 5.0 2.0
Aborted.
【问题讨论】:
-
输入字符串应该像:
42.0 mm 23.4 mm(每个值/单位之间有两个空格)。 -
空格的数量无关紧要,但
mm当然应该在那里。 -
请注意,使用编写的代码,您永远不会发现第二个
mm是否不存在,但第一个mm必须存在。由于格式字符串中的空格表示数据字符串中的“可选空格”,因此该格式的有效输入字符串可以是999mm9或99.9 mm 10.10 mm甚至99.999999999999999999999999999999E-99 mm 0xA4P-9 Zanzibar(第二个数字字符串是十六进制浮点数value,相当于0.3203125——这对每个人来说都是直观的;好吧——我作弊并编写了一个程序来找出值是什么)。
标签: c file-io text-files scanf