私は一般的にCに比較的慣れていないので、いくつかのコードに問題があります。これは非常に単純なコードです。コードの目的は、指定された char ポインターの配列、つまり char **source を指定された char **destination にコピーすることです。
私が抱えている問題は、時々 (通常、ソースに 2 つ以上の文字列がある場合) 最初の要素が完全に破損し、目的地を出力すると、「;@?」のようなものが出力されることです。最初の要素の場合、他の要素は正常に印刷されます。
コピーを実行するコードは次のとおりです。
void CopyArrayOfStrings(char **source, int numStrings)
{
char **destination = malloc(numStrings);
for (int i = 0; i < numStrings; i++)
{
destination[i] = malloc(strlen(source[i] + 1);
strcpy(destination[i], source[i]);
}
}
malloc の結果が NULL かどうかをチェックするコードを省略していることに注意してください。