我需要我的程序以這種方式運行./src c 2345 or ./src s 345
,其中第一個字符是c或s,第二個是整數。如果有更少的參數以及除c或s之外的任何字符,程序應該拋出一個使用錯誤。這裏是我的代碼在C中比較字符串文字命令行參數
int main(int argc, char **argv) {
int num_of_connections = 0, client_sockfd;
int max_sockfd, master_socket;
fd_set socket_collection, read_collection;
// Check validity of the user input
if(argc < 3) {
if((strcmp(argv[2], "s") != 0) || (strcmp(argv[2], "c") != 0)){
fprintf(stderr, "Usage: ./src <s/c> <port>\n");
exit(EXIT_FAILURE);
}
}
當我輸入一個參數時,我得到一個分段錯誤。它也不識別C或S參數。任何幫助將不勝感激。
如果你只輸入一個參數,你會得到一個分段錯誤,因爲沒有'argv [2]'這樣的東西......你應該首先檢查'argc'來查看參數個數是否完全是**你的程序需要什麼。如果是這樣(並且只有那麼)繼續,並檢查它們是什麼。當然,上述兩個檢查都失敗了,打印出使用信息。 – adam10603 2014-09-27 16:37:45