[解決済み] mallocで文字列の配列を動的に作成する。
2022-02-08 08:45:53
質問
C言語で文字列の配列を作成しようとしています。
malloc
. 配列が保持する文字列の数は実行時に変更することができますが、文字列の長さは常に一貫しています。
私はこれを試しましたが(下記参照)、問題があります。正しい方向へのヒントは大いに感謝されます
#define ID_LEN 5
char *orderedIds;
int i;
int variableNumberOfElements = 5; /* Hard coded here */
orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1));
最終的には、配列を使ってできるようにしたいです。
strcpy(orderedIds[0], string1);
strcpy(orderedIds[1], string2);
/* etc */
解決方法は?
文字列のポインタの配列を割り当て、各ポインタに文字列のための十分なメモリを割り当てる必要があります。
char **orderedIds;
orderedIds = malloc(variableNumberOfElements * sizeof(char*));
for (int i = 0; i < variableNumberOfElements; i++)
orderedIds[i] = malloc((ID_LEN+1) * sizeof(char)); // yeah, I know sizeof(char) is 1, but to make it clear...
私には良い方法のように思えます。多くのmallocを実行しますが、特定の文字列のためにメモリを割り当てることは明らかで、文字列配列全体を解放することなく1つのメモリブロックを解放することができます" string array"。
関連
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] Bashで文字列の配列をループする?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み】C言語でpow( )への未定義参照、math.hを含むにもかかわらず【重複】。
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言