【发布时间】:2021-09-01 13:57:42
【问题描述】:
我写了这段代码:
#include <stdio.h>
void printAllStrings(char **arrPP[])
{
for (char ***p = arrPP; **p != NULL; ++p)
{
int z = 0;
while (*(*p + z) != NULL)
{
printf("%s ", *(*p + z));
z++;
}
putchar('\n');
}
}
void maxLengthString(char **arrPP[])
{
int max = 0;
for (char ***c = arrPP; **c != NULL; ++c)
{
int counter = 0;
int z = 0;
while (*(*c + z) != NULL)
{
counter++;
z++;
if (counter > max)
max = counter;
}
}
printf("%d", max);
}
int main()
{
char *arrP1[] = {"father", "mother", NULL};
char *arrP2[] = {"sister", "brother", "grandfather", NULL};
char *arrP3[] = {"grandmother", NULL};
char *arrP4[] = {"uncle", "aunt", NULL};
char **arrPP[] = {arrP1, arrP2, arrP3, arrP4, NULL};
maxLengthString(arrPP);
printAllStrings(arrPP);
return 0;
}
printAllStrings 打印 arrPP 指向的所有数组,并且 maxLengthString(char **arrPP[] ) 应该返回最长的数组。 我无法返回最长的数组,所以我尝试打印长度的最大值。 输出应该是:
father mother
sister brother grandfather
grandmother
uncle aunt
3
或
father mother
sister brother grandfather
grandmother
uncle aunt
arrP2 // cause it's the longest array
但是什么都没有打印为什么会这样?我怎么能返回最长的数组?
【问题讨论】:
标签: arrays c for-loop pointers dereference