0
したがって、2次元のchar
配列をプログラムして、いくつかの子プロセスから塗りつぶす必要があります。実行時に返される行数はわかりません。Cダイナミックな2D char配列に文字列または(char *)を挿入します。セグメンテーションフォールト
最初の3つの文字列(またはchar*
)が挿入されていてもうまく動作するプログラムを作成しましたが、その後はセグメント化エラーが発生します。配列には値/文字列を保持する必要があります。
グローバル行数:
static int rows = 1;
アレイの初期化:
char **output = (char **)malloc(sizeof(char*) * 1);
output[0] = (char *)malloc(sizeof(char) * 1023);
output[0][0] = '#';
を追加:ここでは、コードです
char foo[1023];
insertArray(output, "bbb");
insertArray(output, foo);
insertArray(output, "bbb");
insertArray(output, "bbb");
それは実際には正常に動作します最初の3回は
機能:
static void insertArray(char **c, char *itemToInsert) {
if (c[0][0] == '#') {
strncpy(c[0], itemToInsert, 1023);
}
else {
c = (char **)realloc(c, (rows + 1) * sizeof(char*));
for (int i = 0; i < rows+1; i++) {
c[i] = realloc(c[i],sizeof(char) * 1024);
}
strcpy(c[rows], itemToInsert);
rows++;
}
}
私はちょうどあなたがあなたの再割り当て、あなたがoutput
に古いポインタを使用しようとする次回の結果を失っいただきました間違った
?どのように私はそれを正確に行うのですか? – Cnoffel
今、もう何も動作しません、申し訳ありません、私の誤りはTypoを得ました、答えのおかげで、それは魅力のように動作します – Cnoffel