さまざまなベクトルの内容をマトリックスに格納しようとしています。
ベクトルの長さは異なり、すべて文字列です。まあ言ってみれば:
A=["MXAA'、"MXBB"、"MXCC"] B=["JJJ"、"LLKLKKL"]
したがって、新しいマトリックスは次のようになります。
C = [MXAA、MXBB、MXCC;JJJ、LKKLKLKL、0]
Cでそれを行う方法はありますか?
ありがとう
要素型へのポインタへのポインタの配列を作成する必要があります(あなたの場合はへのポインタchar
です)。
考慮する必要がある問題は、すべての配列が異なるサイズであることです。そのため、配列のサイズを保存することをお勧めします。そうしないと、すぐに配列の境界を超えてしまうことになります。これはカスタムタイプのように聞こえます。
typedef {
int n;
char **strArr;
} stringArray;
stringArray *str2d;
str2d = (stringArray*) malloc(2*sizeof(stringArray));
str2d[0].n=3;
str2d[0].strArr = (char**)malloc(3*sizeof(char*));
str2d[0].strArr[0] = "MXAA";
str2d[0].strArr[1] = "MXBB";
str2d[0].strArr[2] = "MXCC";
str2d[1].n = 2;
str2d[1].strArr = (char**)malloc(2*sizeof(char*));
str2d[1].strArr[0] = "JJJ";
str2d[1].strArr[1] = "LKLKLKL";
要素にアクセスする場合は、同様のアドレッシングを使用しますが、境界内にとどまっていることを確認してください!
これにより、原則が明確になることを期待して、非常に明確な手順で意図的にこれを行いました。これを行うためのより良い方法がありますが、それらはよりあいまいです (または「標準 C」ではありません)。