我寫在C程序,需要幾個命令行參數。的argv [1]將是一個單個字符「選項」,無論是一個「a」或「b」或「c」的,每個選項導致程序以不同的方式運行。我想開始我的程序的main()方法來檢查if語句的命令行上指定的用戶是否選擇是正確的,即無論是一個「A」或「B」或「C」,而不是其他。使用ARG [V]的命令行參數在C程序
我的代碼:
int main (int argc, char *argv[])
{
if (argv[1] != 'a' || 'b' || 'c') printf("Failure\n");
else printf("Success\n");
}
當我編譯這段代碼,我得到這樣的警告:
warning: comparison between pointer and integer
我明白,我濫用指針字符數組,但我不」不明白我的意思。
感謝錯誤的解釋,是有道理的。代碼的[0]部分是做什麼的? – freezefry
@ user3413460,如果你用'program abcd'調用程序,那麼'argv [1]'是字符串'「abcd」',而'argv [1] [0]'是該字符串的第一個字符,即''a''。 –
我會寫'if(argc> 1 && strlen(argv [1])> 0)'來迎合'./a.out「」'個案,儘管在這些情況下你可能會認爲argv [1] [ 0]保存'\ 0'。 –