0

我正在编写我的简单 C shell 的退出部分。

int main(int argc, char*argv[]){
    while(1){
        char input_line[MAX], *tokens[X_MAX];
        int i,n; //n is the number of tokens inside the *tokens
        .
        .
        .//gets the input from user and stores into tokens
        .
        if(n ==1){
            char *ex = "exit";
            printf("difference: %i\n",strcmp(tokens[0],ex));  //this prints out 10
        }


    }
}

当它们明显不同时,我被困在了这一部分。我想做的是,当用户输入“exit”(存储在 char 数组“tokens”中)时,if 语句将其拾取,然后将其与存储在“ex”中的进行比较。

任何想法?

谢谢

4

1 回答 1

4

很可能您没有修剪从用户那里获得的字符串,它仍然包含换行符'\n'. 我跳到这个条件是因为\nASCII 是 10。


对于修剪,我使用这个:

for (p = line + strlen(line) - 1; p >= line && isspace(*p); --p)
        ;

p[1] = 0;

不知道我是从哪里弄来的,或者它是不是我的。不过可能不是我的。

于 2013-02-03T20:24:47.080 回答