有問題的代碼部分正試圖解碼MIPS指令正在使用的寄存器。如何將整數連接到C中的字符串上?
這是通過傳遞寄存器的整數值,然後返回一個包含寄存器名稱的字符串。這樣做的王子聲明在這裏,它調用getReg來獲取字符串。
printf("$%d aka $%s\n", itype->rs, getReg(itype->rs));
到目前爲止,我已經試過這將它們串聯(不case語句):
char* getReg(int d) {
char out[4];
sprintf(out, "a%d", (d - 4));
return out;
}
但是在這個輸出結果:
$ 6又名$ IU(
當它應該是:
$ 6又名$ A2
我在哪裏這個問題呢?
無論'out'足夠大是無關緊要的,返回一個本地陣列仍然未定義的行爲。 – 2013-02-12 16:00:01
確實,試着在你的'sprintf'後面加一個'printf'並看看。此外,使用GDB,有很大幫助 – noMAD 2013-02-12 16:01:19