[英]Command line parameter in C
給程序參數'2'或'3'時出現分段錯誤。 它應該打印出數字二/三。 這是什么錯誤?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc > 1) {
if (*argv[2] == '2') {
printf("That's number two!");
}
else if (*argv[2] == '3') {
printf("That's number 3!");
}
else
printf("Error.\n");
}
else
printf("No input given.\n");
return 0;
}
當我運行程序時,鍵入./Test 2或3。我找不到錯誤,並且gcc也沒有給出錯誤/警告。 謝謝。
argv
是一個數組:
argv[0] // the name of the executable
argv[1] // the first argument
argv[...]
當您這樣做時:
if (*argv[2] == '2')
並且通過./Test 2
進行了調用,只有一個參數,因此argv[2]
是一個越界訪問。
有關更多信息,請參見main函數 。
if (*argv[1] == '2') {
printf("That's number two!");
}
else if (*argv[1] == '3') {
printf("That's number 3!");
}
索引以0開頭。
argv [0]是程序的名稱,而argv [1]是第一個命令行參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.