0

我想从文本文件中读取数字数据行。该行有两部分:第一部分是一个索引,可以是一个整数,两个整数,...或根本没有整数!第二部分可以是整数、双精度或浮点类型的一个或两个数字。

从文件的标题中,我知道会发生什么,但是如何在没有 if/casing 几十个案例的情况下在 C 中通常读取这些行?我想到了联合、X 宏、枚举……等等。为了增加这个问题,我不能指向 C 中的数据类型,因为我在想,一旦我可以确定我的案例,我就可以指向一个适当的数据类型。至少我可以指向一个函数。

目标是将数据简单地加载到内存中。我想使用结构,但不,我想我只会指向每个部分。

我对C的要求太多了吗?

4

2 回答 2

1

你真的只有包含 1 到 4 个数字的行。所以:

char line[LINE_MAX]; // populate this somehow
double values[4];
int count = sscanf(line, "%f %f %f %f", &values[0], &values[1], &values[2], &values[3]);
// now count tells you how many values were read, so ignore the others

你可能会说,“但我也想要整数支持!” 嗯,你明白了。你得到它没有任何“如果”陈述。所以要高兴,并且知道一堆编程语言(例如Javascript,Lua)也并不真正担心这种区别。

于 2013-03-07T04:26:20.513 回答
0

我想我将生成所有采用相同指针数组的函数。

我将手动编写处理 0、1 或 2 个索引但使用宏生成数据类型的函数,例如

int readingfunc1(aline,arrofp){

return sscanf(aline,"%d XSTRFORMATDATATYPESLIST XSTRFORMATDATATYPESLIST", arrofp[2],arrofp[3])
//arrofp={arrofp[0], NULL, arrofp[2],arrofp[3]}

func0 和 func2 视情况而定。

于 2013-03-08T03:59:49.947 回答