你如何在c中迭代一组字符数组?

Wal*_*ner 5 c c-strings

您是否必须手动循环遍历数组并获取每个字符数组的strlen计数,求和,使用求和值分配目标,然后再次循环数组?

如何找到包含字符数组的数组的大小,以便迭代它们?

Fre*_*Foo 7

如何找到包含字符数组的数组的大小,以便迭代它们?

有两种方法:

  1. 在变量中分配字符串时,记录数组中的字符串数.
  2. char*在数组的末尾分配一个额外的并在其中存储空指针作为标记,类似于使用NUL字符终止字符串的方式.

换句话说,在分配数组时,您必须自己进行簿记,因为C不会为您提供所需的信息.如果您遵循第二个建议,您可以获得字符串数组中的字符总数

size_t sum_of_lengths(char const **a)
{
    size_t i, total;
    for (i = total = 0; a[i] != NULL; i++)
        total += strlen(a[i]);
    return total;
 }
Run Code Online (Sandbox Code Playgroud)

'\0'在进行实际连接时,不要忘记保留空间.