【发布时间】:2015-04-29 19:33:21
【问题描述】:
下面的代码可以编译,但是当我运行它时,我遇到了一个导致无限循环的错误。循环甚至没有到达我应该接受新值的 scanf ,而是总是打印提示。我到底做错了什么导致这个问题..
#include <stdio.h>
#include <stdbool.h>
//variables
bool flag = false;
int input = 0;
//function protoypes
void get_input(void);
bool is_valid(int);
void print_pattern(int number);
int main(){
get_input();
print_pattern(input);
return 0;
}
void get_input(){
while(flag == false){
printf("please enter an odd number betwen 1 and 9\n");
scanf("%d", &input);
if(is_valid(input)){
flag = true;
}else{
flag = false;
}
}
}
bool is_valid(int number){
if(number == 1 || number == 3 || number == 5 || number == 7 || number == 9){
return true;
}else{
return false;
}
}
void print_pattern(int number){
int i = 0;
for(i = 0; i < number; i++){
printf("%s",i);
}
}
【问题讨论】:
-
如果您的输入不是有效数字,就会发生无限循环,对吧?
-
它对每个数字都这样做,无论是有效还是无效
-
@Kevin ,关闭您的编译器,然后打开它并再次运行此代码。它不会进入我的无限循环。 (无论如何你都在使用哪个编译器)
-
我在我们学校的服务器上使用 GCC 编译器,并使用以下命令编译它 gcc -o program1 lab3.c
-
不是答案,但
printf("%s",i);应该是printf("%d",i);