【发布时间】:2016-03-27 21:36:48
【问题描述】:
如果我有 char **args 我如何循环遍历数组的 行 以确定有多少?
比如char **args == {"one", "two", "three"},如何循环遍历每个元素,保持计数,然后返回3?
【问题讨论】:
标签: c loops pointers multidimensional-array
如果我有 char **args 我如何循环遍历数组的 行 以确定有多少?
比如char **args == {"one", "two", "three"},如何循环遍历每个元素,保持计数,然后返回3?
【问题讨论】:
标签: c loops pointers multidimensional-array
由于您的 args 是空终止的,因此只需编写
int i;
for (i = 0; args[i]; i++)
// do something
【讨论】:
您可以在编译时获取大小,如下所示。
这是遍历字符串数组的一种方法。
char* args[] = {"one", "two", "three"};
char** p = args;
size_t len = sizeof(args) / sizeof(*args);
for (int i = 0; i < len; ++i) {
printf("item %u = %s\n", i, *p++);
}
[编辑]
我误会了,看来你的意思是命令行上的 args(以 null 结尾);
在这种情况下你可以使用:
int main(int argc, char** argv) {
char** p = argv;
int count = 0;
while (*p)
printf("item %u = %s\n", count++, *p++);
}
甚至
int main(int argc, char** argv) {
int count = 0;
while (*argv)
printf("item %u = %s\n", count++, *argv++);
}
请注意,您将在上述情况下打印 argv[0]。适应您的需求。
当然,在这种情况下,你也有 argc,所以你可以迭代直到 i
【讨论】:
试试下面的代码:
int count=0;
while(*args++)count++;
printf(" %d\n",count);
while循环应该在到达字符串数组的末尾时终止,但是最好有:
char strAry[M][N]="…your initialization…";
**args;
args=strAry;
【讨论】: