3

所以我传入了一个名为 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

提前致谢!

编辑:哦!我发现了 MUL 的错误。这是因为我的脚本本身存在格式错误。非常感谢您的帮助!

4

1 回答 1

0

您添加的代码没有任何意义,因为整个流程是不可见的。

char* single;
int singleLen= strlen(inputString);
char singleTemp[singleLen+1];

大概有一个缺失malloc()的初始化single,然后是一些缺失的 I/O 读取数据以便strlen()调用作用于实际数据?此外,在我看来,这里不需要使用可变长度数组(动态分配),只需将它们设为静态且例如 512 个字符长左右即可。

于 2013-04-23T15:05:24.923 回答