gpt4 book ai didi

C - 基于变量的 For 循环没有迭代正确的次数

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

在我当前的测试用例中,nCities 在运行时变为 8。我通过 printf 打印它来确保这一点。然而,当我使用 i <= nCities 时,循环似乎只迭代一次。如果我使用 i <= 8,它就可以正常工作。这是为什么?

  int nCities = 0;
scanf("%d", &nCities);

if (!nCities == 0)
{
printf("Number of cities: %d \n", nCities);

char tempCity[3];

for(int i=1; i <= nCities; i++)
{

printf("Number of cities: %d \n", nCities);
scanf( "%s", tempCity );
printf( "%s", tempCity );

}

最佳答案

对于输入“ABC ”,代码 scanf( "%s", tempCity );将三个字符“ABC”放入tempCity中并以空字符终止它们。然而,tempCity被定义为只有三个字符,即 char tempCity[3]; 。由于 scanf 超出了数组的边界,结果行为不是由 C 标准定义的。

通过创建 tempCity 来修复此问题足够大以包含其所需的所有数据和/或限制 scanf通过指定最大字段宽度,例如 %3f 。 (请注意,对于 %3ftempCity 应定义为 char tempCity[4] ,以允许三个字符加上空字符。)

关于C - 基于变量的 For 循环没有迭代正确的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58241330/

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