首页 > 解决方案 > C:为什么我的程序在while循环后不继续?(扫描)

问题描述

我目前正在学习C并想编写一个程序,该程序需要一个数字ganzeZahl来确定数组长度。

然后你必须输入存储在该大小数组中的数字,n然后它应该进行选择排序(我在这里删掉了,因为我的程序甚至没有到达那个部分)。

每当我尝试运行它时,我都无法通过 while 循环。它编译得很好。它永远不会到达printf("!!!--------!!!");//由于某种原因没有到达这个部分?测试5。

#include<stdio.h>

int main() {

  int ganzeZahl;
  scanf("%d", &ganzeZahl);
  //printf("ganze Zahl ist: %d\n", ganzeZahl); //test

  int array[ganzeZahl];
  int i = 0;

  for(int z = 0; z < ganzeZahl; z++) {
    printf("%d\n", array[z]);
  }

  while(i<ganzeZahl) {
    //printf("!!!hier!!!\n"); //test2

    scanf("%d", &array[i]);
    //printf("zahl gescannt!\n"); //test 3
    i++;
    //printf("i erhöht!\n"); //test 4
  }

  printf("!!!--------!!!"); //this part isn't reached for some reason? test5
  //selection sort here
//[...]

  return 0;
}

标签: cwhile-loopscanf

解决方案


您的程序确实执行正确,并最终到达最后一次printf调用。

当它进入while循环时,它会继续调用scanf,是什么导致它停止并等待每次迭代输入一个值。如果您提供ganzeZahl输入(输入数字并按“输入”),它将完成循环并继续。我想如果你在循环中添加一个printf之前scanf,它应该更直观。


推荐阅读