[問題] argv的問題

看板C_and_CPP (C/C++)作者 (膩了新鮮感)時間16年前 (2010/04/18 22:58), 編輯推噓3(309)
留言12則, 6人參與, 最新討論串1/1
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <ctype.h> 4 5 int main(int argc, char *argv[]) 6 { 7 while(--argc) 8 { 9 printf("%s\n",argv[argc]); 10 } 11 return 0; 12 } 請教各位前輩 這個程式很明顯的就是我輸入什麼就print什麼 但是為什麼當我輸入"*"的時候 所出現的結果竟然是 root[10:54pm]~>./mult 1 2 3 4 * wshome.core wshome.c wshomewell.txt try.core try.c trytest.core test.c testread.c readmult.c multeval.c eval] 123.txt 4321t 為什麼輸入乘法符號卻不是輸出乘法符號呢? 該怎麼改才能讓他輸出乘法符號呢? 不能解決這個問題我寫不出來infix to postfix... 麻煩請各位版大為我解惑了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.22.18

04/18 23:04, , 1F
被shell解讀為檔名mask了。試試看 \*
04/18 23:04, 1F

04/19 03:22, , 2F
./mult 2 3 4 5 "*"
04/19 03:22, 2F

04/19 04:08, , 3F
也就是說他跟C語言沒關係 是shell把你的*代換成檔名了...
04/19 04:08, 3F

04/19 04:10, , 4F
不過好奇怪 為什麼4 3 2 1沒有出現呢?mult也沒出現...
04/19 04:10, 4F

04/19 09:49, , 5F
加上""的確就可以work 但有沒有不加就可以work的方法?
04/19 09:49, 5F

04/19 12:23, , 6F
在shell裡那個符號有特殊用途 所以要加""或\
04/19 12:23, 6F

04/19 12:50, , 7F
shell的特性除非你換掉, 不然應該沒辦法解決....
04/19 12:50, 7F

04/19 12:50, , 8F
不過, 把你的輸入改從某個檔案讀之類的不就好了?_?
04/19 12:50, 8F

04/19 12:51, , 9F
Ex: ./mult input.txt // 之類的@_@"
04/19 12:51, 9F

04/19 15:25, , 10F
無法耶 因為作業的要求就是這樣...stO
04/19 15:25, 10F

04/19 15:33, , 11F
要不要和助教還是教授反應看看?? 這個比較不是C/C++或者
04/19 15:33, 11F

04/19 15:34, , 12F
轉後序的問題, 這單純是環境的shell會有這種特性造成的.
04/19 15:34, 12F
文章代碼(AID): #1BontvS1 (C_and_CPP)
文章代碼(AID): #1BontvS1 (C_and_CPP)