我想从一个txt文件,这样读一个float类型号:如何从文件中读取特殊字符浮子式数字
American history 91 12.9% 8 1
但是,如果我有
fscanf(file, "%s %d %f %d %d", major, &number1, &percentage, &number2, &number3);
它读由于涉及特殊字符,因此给了我一个错误。我应该怎么做才能取出浮动部分?
我想从一个txt文件,这样读一个float类型号:如何从文件中读取特殊字符浮子式数字
American history 91 12.9% 8 1
但是,如果我有
fscanf(file, "%s %d %f %d %d", major, &number1, &percentage, &number2, &number3);
它读由于涉及特殊字符,因此给了我一个错误。我应该怎么做才能取出浮动部分?
用反斜杠()作为转义字符
的fscanf(文件 “%s%d%F \%%d%d”,大,&数字1,&百分比,& NUMBER2,& number3的);
从manpage:
%
匹配字符 '%'。也就是说,格式字符串中的%%匹配单个输入'%'字符。没有转换完成(但放弃了初始空白字符),并且不会发生分配。
例子:
#include <stdio.h>
int main() {
float a, b;
scanf("%f%%%f", &a, &b);
printf("%f, %f\n", a, b);
return 0;
}
输出:
$ gcc test.c && echo "1.2%3.4" | ./a.out
1.200000, 3.400000
这不是失败,因为百分号的,而是因为你的格式字符串是错误的。 %s
不读取任意字符串,它读取第一个空白字符,即“American”。此后fscanf
将失败。提示:查找[
。
尽管如此,您只需要在格式字符串中输入以下内容:%f%%
(读取浮点数,匹配%
)。
什么/哪里是'特殊字符'? – 2013-03-14 18:35:14
@ H2CO3'%'符号 – 2013-03-14 18:35:56
如果你想捕获'%',你需要在你的格式字符串中读取字符串'%s'的百分比。 – 2013-03-14 18:36:32