【问题标题】:Argv and argc in C [duplicate]C中的Argv和argc [重复]
【发布时间】:2020-10-12 02:04:49
【问题描述】:

argc 有问题。

我发送的命令行:prog 333 jos nije kraj akademske godine

void main(int argc, char *argv[]){
    char pom[40];
    char *ptr;
    strcpy(pom, argv[5]+3);
    printf("%s;", pom);
    ptr=strchr(argv[6], 'd');
    printf("%s;", ptr);
    printf("%d.", argc);

    return 0;
}

我收到j;demske;8.

为什么是 8 而不是 7。我应该得到发送的参数数量。

【问题讨论】:

  • prog第一个参数还是你程序的名字?
  • 你是否尝试打印你得到的所有参数?

标签: c command-line-arguments argv argc


【解决方案1】:

“akademske”是argv[6],所以你有argv[0]argv[7]的参数。所以这是8个论点。 argv[0] 是您的程序的名称。

【讨论】:

    【解决方案2】:

    考虑到程序输出似乎这些病房的顺序

     prog 333 jos nije kraj akademske godine
    

    是命令行参数。所以包括与argv[0]对应的程序名本身argc等于8

    来自 C 标准(5.1.2.2.1 程序启动)

    如果argc的值大于零,则指向的字符串 argv[0] 代表程序名;

    argv[5] 是字符串kraj。所以这些陈述

    strcpy(pom, argv[5]+3);
    printf("%s;", pom);
    

    输出'j'

    还有这些陈述

    ptr=strchr(argv[6], 'd');
    printf("%s;", ptr);
    

    输出demske

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2013-09-08
      • 2011-07-08
      • 2014-10-09
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多