问如何读取特定格式的数据文件?
如何读取十个浮点数而不必使用一个费劲的scanf格式
字符串,例如"%f %f %f %f %f %f %f %f %f %f"?
如何将一行中任意数量的字段读取到数组中?
答通常,有三种主要的数据行解析方法:
1234ABC5.678可以使用"%d%3s%f"来读取。(另请参见问题 12.19 的最后一个示例。)
这是一个简单的示例,它将一行最多 10 个浮点数(以空格分隔)复制到一个数组中。
#define MAXARGS 10 char line[] = "1 2.3 4.5e6 789e10"; char *av[MAXARGS]; int ac, i; double array[MAXARGS]; ac = makeargv(line, av, MAXARGS); for(i = 0; i < ac; i++) array[i] = atof(av[i]);(有关makeargv.)
如果可能,请设计数据文件和输入格式,以便它们不需要晦涩的技巧,而是可以使用更简单的技术(例如 1 和 2)进行解析:这样处理文件将更加令人愉快。