0

単純なCシェルの出口部分を書いています。

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 に答える