我必须修改此代码,需要2个命令行参数

  if (argc == 3){
   host = argv[1];
    port = atoi(argv[2]);
      else {
    fprintf(stderr, "usage error: incorrect number of arguments\n");


以任意顺序具有3个可选的命令行参数(用户名,服务器主机号,服务器端口号)。我以这种方式编写,但无法正常工作。请有人帮我弄清楚该怎么做。谢谢

  if (argc<1 || argc>4)
    fprintf(stderr, "usage error: incorrect number of arguments\n");
else
    for(int i=1;i<=argc;i++)
    {
        if (strcmp( argv[i],"-u"==0 )
             username=argv[i];
        if(strcmp(argv[i],"-p"==0)
            port=atoi(argv[i]);
        if (strcmp(avrgv[i],"-h"==0)
            host=(argv[i]);

最佳答案

使用getopt,它专门用于以一致的方式处理命令行参数,这是很难正确完成的。

09-05 23:12