前提・実現したいこと
静的配列を持つ動的配列を作成したいです.
下記のソースコードでは,静的配列を構造体として定義しておくことで実現しています.
しかし,配列一つのために構造体を定義するのは面倒に感じました.
そこで,下記ソースコードと同じ動作を構造体を用いずに再現したいです.
C
1#include <stdio.h> 2#include <stdlib.h> 3typedef struct { 4 char str[32]; 5} STR; 6int main() { 7 STR str = { "ABC" }; 8 STR *data; 9 data = (STR *)malloc(sizeof(STR) * 5); 10 data[0] = str; 11 printf("%s\n", data[0]); 12 free(data); 13 return 0; 14}
試したこと
下記ソースコードは試しに作成したものになります.
こちらはエラーが出て動作しません.
エラーはchar**
とchar (*)[]
を変換できないといった内容のようです.
一度構造体を定義するしか解決方法はないのでしょうか?
アドバイスをいただけると助かります.
C
1#include <stdio.h> 2#include <stdlib.h> 3int main() { 4 char str[32] = "ABC"; 5 char (*data)[]; 6 data = (char **)malloc(sizeof(char *) * 5); 7 data[0] = str; 8 printf("%s\n", data[0]); 9 free(data); 10 return 0; 11}
エラーメッセージ
prog.cc: In function 'int main()': prog.cc:6:16: error: cannot convert 'char**' to 'char (*)[]' in assignment 6 | data = (char **)malloc(sizeof(char *) * 5); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | char** prog.cc:7:15: error: invalid use of array with unspecified bounds 7 | data[0] = str; | ^ prog.cc:7:15: error: invalid use of array with unspecified bounds 7 | data[0] = str; | ~~~~~~^ prog.cc:8:30: error: invalid use of array with unspecified bounds 8 | printf("%s\n", data[0]); | ^
補足情報(FW/ツールのバージョンなど)
C99
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。