我寫了一個C程序,通過將表達式作爲命令行參數傳遞來計算反向波蘭表示法,但是當我傳遞*(用於乘法)時,它傳遞該文件夾中的所有文件名。傳遞*作爲命令行參數
比如我通過這樣的:
./rpn 10 20 30 + *
,當我打印所有參數的結果是,
10
20
30
+
gcd
gcd.c
gcd.c~
rpn
rpn.c
rpn.c~
swapmacro
swapmacro.c argc :12
我寫了一個C程序,通過將表達式作爲命令行參數傳遞來計算反向波蘭表示法,但是當我傳遞*(用於乘法)時,它傳遞該文件夾中的所有文件名。傳遞*作爲命令行參數
比如我通過這樣的:
./rpn 10 20 30 + *
,當我打印所有參數的結果是,
10
20
30
+
gcd
gcd.c
gcd.c~
rpn
rpn.c
rpn.c~
swapmacro
swapmacro.c argc :12
你需要躲避*
例如引述它像"*"
或逃避它像\*
的*
擴張是由椰殼(啓動程序前)。閱讀例如Advanced Bash Scripting guide。
這不是C問題。您正在使用Bash(或其他等效的shell),其中*
會自動展開(在它到達您的程序附近之前)。你需要做這樣的事情:
./rpn 10 20 30 + "*"
工作,謝謝。但有什麼我可以做的,以阻止它,我運行的Ubuntu終端如何知道它會擴大或不是在特定的環境? –
@ParagJain是閱讀巴西爾的答案,以避免它。 –
你用什麼程序將'*'傳遞給你的程序?這聽起來像你只是不知道如何使用你用來啓動C程序的任何程序。 –
我使用的是Ubuntu 12.04終端來運行我的程序,那是你在問什麼? –
它被稱爲**文件名擴展**:讓我們試試這個代碼'爲我in *;做$ echo $ i;完成;'在您的shell –