gpt4 book ai didi

c - C语言中如何计算字符串数组元素的个数?

转载 作者:行者123 更新时间:2023-11-30 14:24:12 25 4
gpt4 key购买 nike

我希望循环重复的次数与“fruits”数组中的字符串一样多。

首先使用“while”循环进行尝试,但我无法使其正常工作(现在已注释),因为(如调试器所示)它在第四次迭代时出现段错误。此方法应该适用于字符或整数数组,但不适用于字符串数组。为什么会这样?

然后我尝试使用“for”循环,并希望它在达到数组中存储在“count”变量中的字符串元素总数时停止。但是,我找不到一个好的方法来计算数组中字符串的数量。这可能吗? “sizeof”运算符在这里似乎不是一个好的解决方案。

提前感谢您的回复。

#include <stdio.h>

int main()
{
char *fruits[]={"Apple", "Grapefruit", "Banana"};
int i=0;
int count=sizeof(*fruits);


char **bitter=&fruits[1];

printf("Bitter fruit is: %s", *bitter);

puts(" ");

printf("All fruits are: ");

for (;i<count;i++);
{
printf("%s ",*(fruits+i));
}

/*
while ( fruits[i] != '\0')
{
printf("%s ",*(fruits+i));
}

stuff above failed. why?
*/


return 0;
}

最佳答案

一个简单的方法是将 NULL 附加到列表中:

char *fruits[] = {"Apple", "Grapefruit", "Banana", NULL};

然后你可以像这样打印所有水果:

int i = 0;
while (fruits[i] != NULL) {
printf ("%s ",*(fruits+i));
i++;
}

至于为什么你原来的 while 循环失败:

  • 你的i没有增加
  • 您正在检查 fruits[i] != '\0' 是否为 fruits[i] ,其中 fruits[i] 是指向 char 的指针,并且 '\0' 是一个等于 0 的 char。因此,您实际上是在检查 fruits[i] 是否指向 0,但对于前三个迭代情况并非如此,因为 fruits[i] 指向相应水果的第一个字符,而在第四次迭代中 fruits[i] 指向一个不存在的内存位置。 t 属于您的程序。

关于c - C语言中如何计算字符串数组元素的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12128934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com