我正在学习C,并且正在努力学习如何遍历一系列字符串 我们只是说我定义一个数组,如下所示:
char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};
现在,我将如何确定argv_custom中的字符串数量? (例如argc_custom)
我是否正确地采取了正确的方式?此外,是否可以执行以下操作:
伪代码
if ('--debug' in argv_custom) { // do stuff }
答案 0 :(得分: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
。当然,您可以(并且可能应该)将此行为包装到函数中。
答案 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
的首选,但是当你想循环它时,它是另一种选择。