gpt4 book ai didi

c - sscanf 在我的字符串中添加 0

转载 作者:行者123 更新时间:2023-11-30 17:43:49 25 4
gpt4 key购买 nike

我正在为汇编器编写一些 C 代码,该汇编器用于为我们的教科书设计的虚拟计算机。重点是让二进制输出看起来与通过教科书附带的程序运行汇编后的输出相同。我正在执行最后一条转换为二进制的指令 BR(用于分支),并且在使用 sscanf 时遇到了一些问题。其功能是,

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 在 word 和 arg1 中放置的每个字符之间添加 0,因此它们被终止。输入字符串“BRZP START”分别被分为“B”(表示单词)和“S”(表示arg1)。我已经以这种方式使用了很多次 sscanf,但不知道为什么它现在不起作用。

最佳答案

如果你看man page对于 sscanf ,似乎 %S (大写 S)实际上没有任何意义(根据 printf 手册页,它看起来好像相当于“ls”,它从字符串中读取宽字符,但不应该使用。当一串短字符转换为一串长字符时,每隔一个字符似乎等于零)。试试这个:

sscanf(line, "%s%s", word, arg1);

关于c - sscanf 在我的字符串中添加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20170517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com