这是我的代码的一部分
char **images; // An array of strings filled with valid data
while(*images)
{
printf("input image = %s\n", *images);
images++;
}
我希望它在到达数组末尾时退出循环,但它仍然进入循环并崩溃。请建议如何解决此问题。数组中的元素数量不固定。
答案 0 :(得分:1)
代码不知道如何停止,因为while循环始终为true,即不为零。即使您将数组的末尾运行到未标记的地址空间,代码仍会继续,然后按照您的建议进行段错误。
您应该始终使用诸如“\ 0”之类的标记来关闭字符串数据,并在while循环中执行检查,即:
while ( strcmp(*images, "\0") != 0 )
或者您应该知道**图像数组的大小并在阅读完最后一项后停止。因此,最好使用for循环而不是while循环。上面的strcmp版本效率低得多。 for循环应该非常有效。