としてC文字列の可変長配列を渡す、私はCストリングの可変長配列を宣言した後secondPass(呼び出された関数に渡す)私のメイン関数の関数引数
()、Iが実行しますループは、dec_instructionという文字列の内容を決定します。それを配列に追加しようとします。
int main(int argc, char *argv[]) {
/* Logic to decide num_commands */
char machine_instructions[num_commands][11];
secondPass(machine_instructions, num_commands);
}
secondPass(char **machine_instructions, int num_commands){
for(int i = 0; i < num_commands; ++i){
char dec_instruction[11];
/* Logic to decide contents of dec_instruction */
strcat(machine_instructions[i], dec_instruction);
}
}
申し訳ありません私のコードの完全な内容を投稿できません。これはクラスプロジェクト用であり、コードの共有に関するルールはかなり厳しいものです。
とにかく、i = 1のときに、最後に近いstrcat()行がEXC_BAD_ACCESSをスローします。私が知る限り、dec_instructionは他のものと同様に有効なC文字列です。私のエラーの原因は何ですか?
'char **'は 'char [] []'を指すことができません。 'machine_instructions [1]'は 'machine_instructions [0]'の後に 'sizeof(char *)'になります –
呼び出しや関数宣言のためにコンパイラから型エラーが出てきたはずです。 – melpomene
'char dec_instruction [11]; ... strcat(machine_instructions [i]、dec_instruction); 'は、コードが確かに_string_ではない配列に文字列を連結しようとするときに問題になります。 'strcat()'コールの前に 'dec_instruction []'の内容は何ですか? – chux