0

テキストファイルから数値データ行を読み込みたい。この行には2つの部分があります。最初の部分はインデックスであり、1つの整数、2つの整数、または整数ではない可能性があります。2番目の部分は、integer、double、またはfloat型の1つまたは2つの数値にすることができます。

ファイルのヘッダーから、私は何を期待するかを知っていますが、何十ものケースをケースに入れずに、これらの行を一般的に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

「でも、整数のサポートも欲しかった!」と言うかもしれません。さて、あなたはそれを手に入れました。そして、「if」ステートメントなしでそれを取得しました。幸いなことに、多くのプログラミング言語 (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 に答える