我想从txt文件中读取一个浮点类型编号,如下所示:
American history 91 12.9% 8 1
但如果我用
阅读fscanf(file, "%s %d %f %d %d", major, &number1, &percentage, &number2, &number3);
它给了我一个错误,因为涉及到一个特殊的角色。我该怎么办才能只取出漂浮部分?
答案 0 :(得分:2)
由于百分号,它没有失败,但是因为你的格式字符串错了。 %s
不读取任意字符串,它读取第一个空格的字符,即“American”。之后fscanf
会失败。提示:查找[
。
要超越%
,您需要做的就是在格式字符串中添加:%f%%
(读取浮点数,匹配%
)。
答案 1 :(得分:1)
来自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
答案 2 :(得分:0)
使用反斜杠()作为转义字符
fscanf(文件,“%s%d%f \%%d%d”,主要版本,&amp; number1,&amp; percentage,&amp; number2,&amp; number3);