C:遍历一串字符串

时间:2012-06-18 00:27:59

标签: c

我正在学习C,并且正在努力学习如何遍历一系列字符串 我们只是说我定义一个数组,如下所示:

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

现在,我将如何确定argv_custom中的字符串数量? (例如argc_custom)
我是否正确地采取了正确的方式?此外,是否可以执行以下操作:

伪代码

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

3 个答案:

答案 0 :(得分:10)

  

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

canonical way

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。当然,您可以(并且可能应该)将此行为包装到函数中。

答案 1 :(得分:3)

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

答案 2 :(得分:-1)

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

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

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

这不是使用sizeof的首选,但是当你想循环它时,它是另一种选择。