C-在段循环中的一系列字符串阵列结束时的分割故障



这是我的代码的一部分

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循环应该非常有效。

相关内容

  • 没有找到相关文章

最新更新