我的程序要求输入的次数太多了。C while循环
在第一次输入之后,我的程序要求输入的次数太多了。源代码:我的程序要求输入的次数太多了。C while循环,c,input,while-loop,C,Input,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 *begi
#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;
}
}
}
#包括
#包括
typedef结构数据{
字符名[100];
int n_在_类中;
国际等级;
结构数据*p;
}数据;
作废添加(数据*开始);
内部主(空){
字符n;
data*begin=malloc(sizeof(data));
而(1==1){
printf(“您想添加新学生(n)还是(y)”;
n=getchar();
如果(n=='n'){
打破
}
如果(n='y'){
添加(开始);
}
}
数据*温度=开始;
while(temp!=NULL){
printf(“%s”,临时->名称);
温度=温度->p;
}
}
无效添加(数据*开始){
data*new=malloc(sizeof(data));
printf(“输入名称:”);
scanf(“%s”,&new->name);
printf(“在类中输入数字:”);
scanf(“%i”,&new->n_在_类中);
printf(“输入等级:”);
scanf(“%i”、&new->grade);
数据*温度=开始;
而(1==1){
如果(临时->p==NULL){
温度->p=新的;
打破
}
否则{
温度=温度->p;
}
}
}
程序启动,我输入y,它调用add函数,我输入所有信息没有问题,输入信息完成后,当再次请求输入时,它会打印两次消息“您想添加新学生(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()
来达到同样的效果。改进你的编码习惯使用while(1)
而不是while(1==1)
我看不出1==1有什么不好的地方,我看不出有任何理由称之为“坏习惯”;您应该始终编写清晰、简单和简短的代码。你只想运行一个无限循环,那么当只有1
可以做同样的事情时,为什么1==1
。