我正在尝试为从命令行输入的端口号实现一个简单的解析方案。我只是想知道下面的代码是否可以正常工作,或者是否有任何错误或不精确。
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)
在循环中重新编辑。这应该有效。还有其他建议吗?