我想从文本文件中读入数值数据行。这一行有两个部分:第一部分是一个索引,可以是一个整数,两个整数,...or根本不是整数!第二部分可以是一个或两个整数、双精度或浮点数类型的数字。
从文件头我知道会发生什么,但是我如何在不使用if/case的情况下在C中读取这些行呢?我已经想到了联合,X宏,enums...etc。雪上加霜的是,我不能在C中指向数据类型,因为我在想,一旦我可以确定我的大小写,我就可以指向适当的数据类型。至少我可以指向一个函数。
目标是简单地将数据加载到内存中。我想使用structs,但不,我想我会有指向每个部分的指针。
我是不是对C要求太高了?
发布于 2013-03-07 04:26:21
您实际上只有包含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
你可能会说,“但是我也想要整数支持!”好吧,你得到它了。没有任何"if“语句就可以得到它。所以要高兴,要知道很多编程语言(例如Javascript,Lua)也不会真的担心这种区别。
发布于 2013-03-08 03:59:50
我想我要生成的函数都使用相同的指针数组。
我将手动编写处理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。
https://stackoverflow.com/questions/15262588
复制相似问题