我目前正在学习 C 并且正在努力解决如何遍历字符串数组。
假设我定义了一个数组,如下所示:
char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};
现在,我将如何确定 argv_custom 中的字符串数量?(例如 argc_custom)
我一开始是不是走对了这条路?另外,是否可以执行以下操作:
伪代码
if ('--debug' in argv_custom) { // do stuff }
我目前正在学习 C 并且正在努力解决如何遍历字符串数组。
假设我定义了一个数组,如下所示:
char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};
现在,我将如何确定 argv_custom 中的字符串数量?(例如 argc_custom)
我一开始是不是走对了这条路?另外,是否可以执行以下操作:
伪代码
if ('--debug' in argv_custom) { // do stuff }
现在,我将如何确定 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. 当然,您可以(并且可能应该)将此行为包装到一个函数中。
你可以做到sizeof(argv_custom)/sizeof(argv_custom[0])。这计算数组的总长度除以每个元素的大小。
我已经多次遇到这个问题,从我发现我最喜欢的解决方案是迭代指针直到null. sizeof一旦您开始使用函数并传递数组,就会停止工作。
这是我在作业中一次又一次使用的范例,它真的很有帮助。完全相同的东西可用于获取 a 的长度cstring或遍历其字符。
char* argv_custom[] = {"--debug", "--verbose", "--test", "--ultimate"};
char **temp = argv_custom;
int size = 0;
while (*temp) {
++size;
++temp;
}
这不是首选 using sizeof,但是当您想循环访问它时,它是一种替代方法。