0
在我的主要功能,我聲明C字符串的可變長度數組,然後將其傳遞到稱爲secondPass()函數傳遞C字符串中的可變長度數組作爲函數參數
在secondPass(),我運行一個循環,它決定了一個名爲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]''sizeof(char *)''過去'machine_instructions [0]' –
你應該從你的編譯器得到一個類型錯誤的調用或函數聲明。 – melpomene
'char dec_instruction [11]; ... strcat(machine_instructions [i],dec_instruction);'是一個問題,因爲代碼嘗試將字符串連接到不是_string_的數組。問問你自己,'strcat()'調用之前'dec_instruction []'的內容是什麼? – chux