[英]My program is asking too many times for input. C while loop
在第一次输入后,我的程序要求输入太多次。 源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct data{
char name[100];
int n_in_class;
int grade;
struct data *p;
}data;
void add(data *begin);
int main(void){
char n;
data *begin = malloc(sizeof(data));
while(1 == 1){
printf("Do you want to add new student(n) or (y)");
n = getchar();
if(n == 'n'){
break;
}
else if(n == 'y'){
add(begin);
}
}
data *temp = begin;
while(temp != NULL){
printf("%s", temp->name);
temp = temp->p;
}
}
void add(data *begin){
data *new = malloc(sizeof(data));
printf("enter name: ");
scanf("%s", &new->name);
printf("Enter number in class: ");
scanf("%i", &new->n_in_class);
printf("enter grade: ");
scanf("%i", &new->grade);
data *temp = begin;
while(1==1){
if(temp->p == NULL){
temp->p = new;
break;
}
else{
temp = temp->p;
}
}
}
程序启动,我输入y,它正在调用添加功能,我输入所有信息没有问题,在我输入信息完成后,当再次要求输入时,它打印消息“你想要添加新学生( n)或(y)“两次。 我尝试使用不同的函数来获取输入scanf,fgets,getline和getchar。
当您输入y或n并按ENTER时 ,新行字符也在输入缓冲区中,您需要在下一个循环之前删除此换行符。
if(n == 'n'){
break;
}
else if(n == 'y'){
add(begin);
}
getchar(); //consumes new line
要在输入缓冲区中使用换行符,还可以使用scanf(" %c", &n) ;
- 格式描述符之前的空格(%c)
取代第一个getchar()
或者你也可以使用
getc(stdin)'
取代第二个getchar()
来实现同样的目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.