这是我的代码的一部分
char **images; // An array of strings filled with valid data
while(*images)
{
printf("input image = %sn", *images);
images++;
}
我期望它在到达数组的末端时退出循环,但它仍然进入循环内并崩溃。请建议如何解决此问题。数组中的元素数量未固定。
代码将不知道如何停止,因为while循环始终是正确的,即不是零。即使您经过数组的末端进入未标记的地址空间,代码将继续运行,然后按照您的建议进行segfault。
您应始终使用标记(例如" 0")关闭字符串数据,并在while循环中执行检查:
while ( strcmp(*images, " ") != 0 )
,否则您应该知道**图像阵列的大小,然后在阅读最后一项后停止。因此,最好将A用于循环而不是while循环。上面的strCMP版本的效率要低得多。for循环应该非常有效。