2013-02-03 124 views
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數組中的「標記」)時,if語句將其選中,然後將其與「ex」中存儲的語句進行比較。

有什麼想法?

感謝

+0

檢查輸入中是否有多餘的空白。 –

回答

4

這很可能是你不修你從用戶那裏得到的字符串,它仍然包含換行符,'\n'。我跳到這種情況,因爲\n是ASCII爲10。


修剪我用這個:

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

p[1] = 0; 

不知道在那裏我得到了它,或者如果它是我的。可能不是我的。

+0

你會如何修剪它?我只是將它存儲回原始變量減去數組中的最後一個點? – user1234440

+0

@ user1234440在stackoverflow上有很多字符串修剪功能的例子。你的方式可能是好的,但你也應該看看別人的嘗試。 – cnicutar

+0

哈哈,不好的做法,但只要在最後的「ex」變量中加上「\ n」即可解決它。非常感謝! – user1234440