コマンドラインから入力されたポート番号の単純な解析スキームを実装しようとしています。以下のこのコードで問題がないのか、エラーや不正確な点があるのか、疑問に思っています。
void main(int argc, char *argv[]){
int sock_ds, opt;
char *cmd_port;
unsigned short port;
/*Parsing command line: port-number retrieving*/
while (( opt = getopt(argc, argv, "p:")) != -1){
switch(opt){
case 'p':
port = (unsigned short) strtoul(optarg, &optarg, 0); //string to unsigned long integer with ushort cast
if(*optarg){
fprintf(stderr, "String-integer conversion error\n");
exit(EXIT_FAILURE);
}
break;
default: /* '?' */
fprintf(stderr, "Usage: %s -p port_number\n", argv[0]);
exit(EXIT_FAILURE);
}
}
printf("Port number retrieved (%d), server is starting ...\n", port);
/* ... */
}
ご協力ありがとうございました!
ループで再編集しgetopt(3)
ます。これは機能するはずです。他に提案はありますか?