所以我传入一个名为SUB的字符串。我使用strcmp与“SUB”进行比较。但是,它不会进入我的if循环。我不确定是什么问题。以下是我的一些代码:
char* single;
int singleLen= strlen(inputString);
char singleTemp[singleLen+1];
strcpy(singleTemp, inputString); //to tokenize without modifying input string
single = strtok(singleTemp, " \r\n");
if (strcmp("SUB", single) == 0){
if (size_list(stack) < 2){
fprintf(stderr, "Not enough elements in stack.\n");
exit(-2);
}
x = peek(stack);
stack = pop(stack);
y = peek(stack);
stack = pop(stack);
stack = push(stack, x-y);
//increment PC
PC++;
return stack;
}
问题可能出在我的输入脚本中吗?我想我的一切都是正确的 - 在SUB之后没有任何额外的空格。以防万一,这是我的代码,直到错误,它不能进入SUB if循环。
CONST R0 4 ;A=4
CONST R1 0 ;B=0
CONST R2 0 ;Constant 0 comparison
CONST R4 1
PUSH R2
PUSH R0
SUB ;ERROR OCCURS HERE
POP R3
提前致谢!
编辑:OH!我发现了MUL的错误。这是因为我的脚本本身存在格式错误。非常感谢您的帮助!答案 0 :(得分:0)
您添加的代码没有任何意义,因为整个流程都不可见。
char* single;
int singleLen= strlen(inputString);
char singleTemp[singleLen+1];
可能是缺少malloc()
初始化single
,然后是一些缺少读取数据的I / O,以便strlen()
调用对实际数据起作用?此外,在我看来,不需要在这里使用可变长度数组(或动态分配),只需使它们都是静态的,例如大约512个字符。