我的字符串不会进入if语句?

时间:2013-04-23 14:13:27

标签: c if-statement token

所以我传入一个名为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的错误。这是因为我的脚本本身存在格式错误。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

可能是缺少malloc()初始化single,然后是一些缺少读取数据的I / O,以便strlen()调用对实际数据起作用?此外,在我看来,不需要在这里使用可变长度数组(动态分配),只需使它们都是静态的,例如大约512个字符。