3

我目前正在学习 C 并且正在努力解决如何遍历字符串数组。
假设我定义了一个数组,如下所示:

char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};

现在,我将如何确定 argv_custom 中的字符串数量?(例如 argc_custom)
我一开始是不是走对了这条路?另外,是否可以执行以下操作:

伪代码

if ('--debug' in argv_custom) { // do stuff }
4

3 回答 3

10

现在,我将如何确定 argv_custom 中的字符串数量?

规范的方式:

int argc_custom = sizeof(argv_custom) / sizeof(argv_custom[0]);

注意:这只适用于数组本身,一旦你有一个指针(例如如果你传递argv_custom给一个函数),它就不再起作用了:

char **p = argv_custom;
int argc_custom = sizeof(p) / sizeof(p[0]);  // No me gusta

是否可以做类似的事情:...

没有捷径。您必须遍历每个字符串,然后执行strcmp. 当然,您可以(并且可能应该)将此行为包装到一个函数中。

于 2012-06-18T00:29:46.173 回答
3

你可以做到sizeof(argv_custom)/sizeof(argv_custom[0])。这计算数组的总长度除以每个元素的大小。

于 2012-06-18T00:29:46.833 回答
-1

我已经多次遇到这个问题,从我发现我最喜欢的解决方案是迭代指针直到null. sizeof一旦您开始使用函数并传递数组,就会停止工作。

这是我在作业中一次又一次使用的范例,它真的很有帮助。完全相同的东西可用于获取 a 的长度cstring或遍历其字符。

char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};
char **temp = argv_custom;
int size = 0;
while (*temp) {
    ++size;
    ++temp;
}

这不是首选 using sizeof,但是当您想循环访问它时,它是一种替代方法。

于 2016-05-18T07:35:12.757 回答