【发布时间】:2014-03-20 08:45:45
【问题描述】:
在第一次输入之后,我的程序要求输入的次数过多。源代码:
#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 并调用 add 函数,我输入所有信息没有问题,在我完成输入信息后,当再次要求输入时,它打印消息“你想添加新学生(n)或(y)”两次。我尝试使用不同的函数来获取输入 scanf、fgets、getline 和 getchar。
【问题讨论】:
-
提高你的编码习惯使用
while(1)而不是while(1 == 1) -
我看不出 1==1 有什么不好,我看不出有什么理由称其为“坏习惯”;
-
您应该始终编写清晰、简单和简短的代码。你只想运行一个无限循环,那么为什么
1==1只有1可以做同样的事情。
标签: c input while-loop