C程式起點main函式

云中锦书来發表於2024-07-30

C程式起點main函式

main

c語言中main函式接收兩個引數int argc, char* argv[]

int main(int argc, char* argv[]);
int main(int argc, char** argv);

如上,argc代表引數的數量,argv但是引數字串指標陣列

./program -i 192.168.0.1 -p 2000

此時共有五個引數,

argv[0] --> ./program
argv[1] --> -i
argv[2] --> 192.168.0.1
argv[3] --> -p
argv[4] --> 2000

那麼我們怎麼去接收這些引數並去識別,那麼就要用到getopt.hgetopt()函式了。

int getopt(int argc, char** argv, char* optstring);

第一個引數、第二個引數對應即可,第三個引數接收的是選項如"i:p:"ip代表選項,:代表其後接收一個引數。每個選項例如"-i"這個函式會直接過濾掉-,每次獲取時會自動將:後的引數傳入到optarg,下次獲取會直接跳到下一個選項。此函式的返回值為選項'i'ASCII碼值。

例項

int main(int argc,  int char){
	// 判斷引數
    if(argc < 5) return -1;    
    int ret = 0;
    char* ip =NULL;
    int port = 0;
    
    // i,p表示兩個命令,:表示需要一個引數
    while ((ret = getopt(argc, argv, "i:p:")) != EOF){
        // printf("char is %c\n",  ret);
        switch (ret)
        {
            case 'i':
                // printf("optarg: %s\n", optarg);
                ip = optarg;
                break;
            case 'p':
                // printf("optarg: %s\n", optarg);
                port = atoi(optarg);
                break;
            default:
                break;
        }
    }
    printf("ip: %s, port: %d\n", ip, port);
    return 0;
}

注意

如果有長命令的輸入需求的話,可以使用getopt_long函式

int getopt(int argc, char * const argv[], const char *optstring);

相關文章