2

私が探していることは実際にはCでは不可能だと思いますが、おそらくそれを回避する方法を知っている人もいます。

いくつかの入力データを処理する必要があります。このデータはintで与えられ、実際のデータを保持するデータの数と文字列の数(つまり、char *)を示します。これらの文字列の名前はdata_0...data_n:です。

 int n = 42; // the number of strings
 char *data_0 = "some input1";
 char *data_1 = "some input2";
 ....
 char *data_41 = "the last input data";

これが私がデータを取得する方法です。今の問題は、どうすればそれを処理できるかということです。私の目標は、それらを大きな配列に格納することです。この配列の初期化はもちろん簡単です。mallocで取得するnchar-Pointerの配列が必要です。しかし、次に、これらの文字列を配列に割り当てたいと思います。そして、これは私が立ち往生しているポイントです。以前はサイズがわからなかったので、動的に割り当てる必要があります。何かのようなもの:

 for(i = 0; i < n; i++)
      datastorage[i] = data_i;

つまり、変数名に動的にアクセスすることを意味します。私が何を意味するのか理解していただければ幸いです:)ありがとうございます。

4

3 に答える 3

4

そもそも配列にしてください!配列としてアクセスする必要がある場合、42個の個別の変数を使用しても意味がありません。ところで、Cでは、変数名は実行時に使用できず、コンパイル後に失われるだけなので、名前で変数に動的にアクセスすることを忘れてください。

int n = 42; // the number of strings
char *data[42];
      data[0] = "some input1";
      data[1] = "some input2";
....
      data[41] = "the last input data";

for(i = 0; i < n; i++)
    datastorage[i] = data[i];
于 2011-03-25T08:56:17.943 に答える
1

Cでこれを行う簡単な方法はありません。配列の要点は、まさにこのようなことを行う必要性を取り除くことだからです。従来、配列を使用して、変数ごとに一意の名前を付けなくても、インデックスによって複数の異なる変数を参照できるようになっています。

このように1行に1つの変数を持つCソースファイルとしてプログラムへの入力を取得するのは奇妙だと思います。このCファイルを生成する場合は、代わりに配列を使用するように生成する必要があります。これにより、要求している修正コードが不要になります。他の誰かがこのようなCコードを提供している場合は、配列を使用するように変更するように依頼してください。このようにご不便をおかけする必要はありません。変更はご自身で簡単に行うことができます。

于 2011-03-25T08:57:04.530 に答える
1

正直に言うと、あなたが何をしようとしているのか100%わかりません...

私が見ることができることから、あなたは最終的にこれらすべての要素を配列に入れたいと思うでしょう。

では、42個の要素の配列を単純に使用し、キーから解析できるものに基づいて割り当ててみませんか。

つまり、data_1、data_を置き換え、1を残します。datarray[atoi(1)]=文字ポインタ。

それは正しいですか?

オブジェクト(C ...の構造体)を作成して、それらを別のより動的なデータ構造に動的に配置することもできます。

于 2011-03-25T08:58:24.227 に答える