簡體   English   中英

C中的命令行參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM