可选命令行参数的默认值
Default values for optional command line arguments
我有一个建立 client/server 聊天的套接字编程任务。当我在终端中键入 3
值时,我的代码可以工作,但问题是我想不出一种方法将它们全部作为可选参数并设置一些默认值以在下面的任何类型的示例中工作,
./Client
./Client username
./Client username portNumber
./Client username portNumber serverAddress
int
main (int argc, char *argv[])
{
connection_info connection;
fd_set file_descriptors;
if (argc =! 4)
{
fprintf (stderr, "Usage: %s <IP> <port> <Name>\n", argv[0]);
exit (1);
}
connect_to_server(&connection, argv[1], argv[2], argv[3]);
}
关于默认值,我只需要用户名是“Anynamous”,ip是“localhost”,端口是3000
I want the username to be "Anynamous" and the ip is "localhost" while the port is 3000
设置这些默认值并在传递足够多的参数时更改它们。
int main (int argc, char *argv[]) {
const char *username = "Anynamous"; // Or maybe "Anonymous"
const char *ip = "localhost";
int port = 3000;
if (argc >= 2) username = argv[1];
if (argc >= 3) ip = argv[2];
if (argc >= 4) port = atoi(argv[3]); // Could add some conversion checking here.
connection_info connection;
connect_to_server(&connection, username, ip, port);
fd_set file_descriptors;
// ...
}
我有一个建立 client/server 聊天的套接字编程任务。当我在终端中键入 3
值时,我的代码可以工作,但问题是我想不出一种方法将它们全部作为可选参数并设置一些默认值以在下面的任何类型的示例中工作,
./Client
./Client username
./Client username portNumber
./Client username portNumber serverAddress
int
main (int argc, char *argv[])
{
connection_info connection;
fd_set file_descriptors;
if (argc =! 4)
{
fprintf (stderr, "Usage: %s <IP> <port> <Name>\n", argv[0]);
exit (1);
}
connect_to_server(&connection, argv[1], argv[2], argv[3]);
}
关于默认值,我只需要用户名是“Anynamous”,ip是“localhost”,端口是3000
I want the username to be "Anynamous" and the ip is "localhost" while the port is 3000
设置这些默认值并在传递足够多的参数时更改它们。
int main (int argc, char *argv[]) {
const char *username = "Anynamous"; // Or maybe "Anonymous"
const char *ip = "localhost";
int port = 3000;
if (argc >= 2) username = argv[1];
if (argc >= 3) ip = argv[2];
if (argc >= 4) port = atoi(argv[3]); // Could add some conversion checking here.
connection_info connection;
connect_to_server(&connection, username, ip, port);
fd_set file_descriptors;
// ...
}