我正在爲用於爲我們的教科書設計的虛擬計算機使用的彙編程序編寫一些c代碼。重點是讓二進制輸出看起來與在通過伴隨教科書的程序中運行程序集之後看起來一樣。我在最後一條指令轉換爲二進制,BR(分支),並與sscanf有一些麻煩。該功能,sscanf將0添加到我的字符串中
char* br(char* line) {
int num, i, l, n = 0, z = 0, p = 0;
char bin[17] = "0000";
char word[20], arg1[20];
sscanf(line, "%S%S", word, arg1);
l = strlen(word);
for (i = 2; i < l; i++) {
if (word[i] == 'N') {
n = 1;
} else if (word[i] == 'Z') {
z = 1;
} else if (word[i] == 'P') {
p = 1;
}
}
bin[4] = n + '0';
bin[5] = z + '0';
bin[6] = p + '0';
while (label[i] != 0) {
if (strcmp(label[i], arg1) == 0) {
num = address[i] - currentAddress - 1;
decToBinary(num, arg1);
break;
}
i++;
}
for (i = 7; i < 16; i++) {
bin[i] = arg1[i];
}
return bin;
}
我遇到的問題是,sscanf的是增加置於字和ARG1每個字符之間0的所以他們被終止。輸入的字符串「BRZP START」分別被分爲字「B」和分別爲arg1的「S」。我已經用這種方式使用sscanf了,不知道爲什麼現在不工作。
你用'%s%s'之間的空格試過了嗎? –