我意识到这是一个令人难以置信的noob问题,但我已经用Google搜索了,似乎无法找到答案(可能是因为我说错了这个问题......如果有的话可以随意修复)< / p>
所以我有这段代码:
int main(int argc, char* argv[])
{
puts(argv[1]);
return 0;
}
如果我将一个参数传递给我的程序,它可以正常工作,但如果我没有,那么显然它会失败,因为它试图索引一个不存在的数组元素。
如何在字符串数组中找到多少元素?
答案 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;