获取C ++中指向char数组的指针中的元素数量

时间:2009-11-23 06:23:15

标签: c++ arrays pointers

我意识到这是一个令人难以置信的noob问题,但我已经用Google搜索了,似乎无法找到答案(可能是因为我说错了这个问题......如果有的话可以随意修复)< / p>

所以我有这段代码:

int main(int argc, char* argv[])
{
    puts(argv[1]);
    return 0;
}

如果我将一个参数传递给我的程序,它可以正常工作,但如果我没有,那么显然它会失败,因为它试图索引一个不存在的数组元素。

如何在字符串数组中找到多少元素?

4 个答案:

答案 0 :(得分:8)

这就是argc的用途。它包含argv中的元素数量。尝试编译并运行它:

#include <stdio.h>
int main(int argc, char* argv[]) {
    int i;
    if (argc < 2) {
        printf ("No arguments.\n");
    } else {
        printf ("Arguments:\n");
        for (i = 1; i < argc; i++) {
            printf ("   %d: %s\n", i, argv[i]);
        }
    }
    return 0;
}

测试运行:

pax> ./prog
No arguments.
pax> ./prog a b c
Arguments:
   1: a
   2: b
   3: c

argv数组的范围从argv[0](用于调用程序的名称,或“”,如果它不可用)到argv[argc-1]。第一个参数实际上在argv[1]

C ++标准实际上要求argv[argc]为0(一个NULL指针),这样你可以完全忽略argc并直接逐步通过argv数组直到你点击了NULL。

答案 1 :(得分:1)

这就是argc

for (int j = 0;  j < argc;  ++j)
    puts (argv [j]);
return 0;

这将正确打印所有参数/

答案 2 :(得分:0)

argc 是一些参数。请注意,您的应用名称也是参数; - )

答案 3 :(得分:0)

答案包含在argc中。 NumOfParamaeters = argc-1;