我正在編寫一個程序,它從命令行讀取「標誌」以及程序名稱。我希望程序讀取幾個標誌(-i
,-c
和-n
),並在調用一個或多個標誌組合時執行不同的功能。對argv []進行迭代會產生段錯誤
這是我開始寫代碼:
printf("Argv 0: %s\n", argv[0]);
printf("Argv 1: %s\n", argv[1]);
printf("Argv 2: %s\n", argv[2]);
for (int i = 1; i <= argc + 1; i++) {
if (strcmp("-i", argv[i]) == 0) {
printf("%s\n", "found -i");
}
else{
printf("%s\n", "did not find -i");
}
}
一個標誌(-i
)只是嘗試,但我想它在同一時間讀一個或幾個標誌,並調用相應的功能。
當我執行該程序:
./program-name test -i
Argv 0: test
Argv 1: -i
Argv 2: (null)
found -i
Segmentation fault
不知道定義,是不是'i <= argc + 1'會導致出界限? – MikeCAT
@MikeCAT總之一句話:不,但是'strcmp(「 - i」,argv [argc])'確實如此。 –