季節のご挨拶!多数の文字列を格納する配列として使用されている char** の内容を出力する関数があります。は次のように宣言されます。
char** commandArray = (char**)malloc(historySize);
ここで、historySize は 8 に設定されたグローバルな int です。配列には、循環キューのような形で、ユーザーが入力するコマンドが取り込まれます。バッファの内容を出力したい場所がいくつかあるので、関数を作成しました。理想的には、関数は commandArray への参照を受け取り、それをループして、その内容を出力します。ここで、ポインターと参照は私の得意分野ではないことを言わなければならないので、正しく行っているかどうかはよくわかりません。関数は次のようになります。
/* prints the contents of the history buffer */
void printHistory(char*** historyBuff)
{
/* a counter for the loop */
int loopIdx = 0;
for (loopIdx = 0; loopIdx < historySize; loopIdx++)
{
/* print the current history item */
printf ("\nhistoryBuff[%i] = %s\n", loopIdx, *historyBuff[loopIdx]);
fflush(stdout);
}
}
次のように、char** を関数に渡します。
printHistory (&commandArray);
現状では、すべて正常にコンパイルされますが、プログラムが履歴を出力すると、関数がループのどこかでハングし、char** の内容が出力されません。SO、私の質問は次のとおりです。commandArray を適切に渡していますか、関数を正しく宣言していますか、関数内で正しい方法で逆参照していますか?
すべてのヘルプや提案を事前にありがとうございます!
-ベン