2010-06-26 22 views
3

我工作了一個小程序,其中我提供命令行參數錯誤時爲殼參數用C

對於例如./a.out 2 3 4 + *

當出現'*'時,不是打印'*'本身,而是打印目錄'+'內的文件夾正常工作。請讓我知道如何刪除此錯誤。我想在這裏打印'*'。

#include <stdio.h> 
int main(int argc, char *argv[]) 
{ 
    char *c; 

    while(--argc > 0) 
    { 
     c = *++argv; 
     if(strcmp(c,"+") == 0) 
     { 
      printf("%s",c); 
     } 
     else if(strcmp(c,"-") == 0) 
     { 
      printf("%s",c); 
     } 
     else if(c[0] == '*') 
     { 
      printf("%s",c); 
     } 
    } 
} 
+1

不,這是肯定的修復您的問題,但你爲什麼所有的突然切換到'= ='當你一直使用'strcmp'時? – 2010-06-26 10:26:29

回答

9

這與您的代碼無關,而與您的shell無關。如果你想讓shell不使用通配符,那麼你需要使用反斜槓或引號將它們轉義。

./foo \* 
./bar '*' 
4

您的shell將'*'字符解釋爲當前目錄中所有文件的列表。問題不在你的程序中,而在於你運行它的方式。

嘗試:

./a.out 2 3 4 + \ *