c - 在链表中输入 char 变量

标签 c linked-list

我必须使用链接列表创建学生数据库,但是在输入第一个学生的信息后,我无法输入其他每个学生的姓名。

struct Student
{
    char name[20];
    int egn;
struct Student *next;
}*start=NULL;


void creat()
{
char ch;
do
{
struct Student *newStudent,*current;

newStudent=(struct Student *)malloc(sizeof(struct Student));

    printf("\nEnter student's name: ");
    gets(newStudent->name);
    printf("Enter student's egn: ");
    scanf("%d",&newStudent->egn);
    newStudent->next=NULL;

if(start==NULL)
{
start=newStudent;
current=newStudent;
}
else
{
current->next=newStudent;
current=newStudent;
}

printf("\nDo you want to creat another : ");
ch=getche();
}while(ch!='n');
}

结果:

Enter student's name: First Student
Enter student's egn: 234234
Do you want to creat another : y
Enter student's name: Enter student's egn: 23452342
Do you want to creat another : y
Enter student's name: Enter student's egn: 234234
Do you want to creat another : n

我的错误在哪里?

最佳答案

尝试在 gets(newStudent->name); 之前和之后使用 fflush(stdin);声明

关于c - 在链表中输入 char 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723352/

相关文章:

.net - 如何使用 VS2008 进行编译以便二进制文件不需要 .NET?

c - 当 assert() 失败时,程序退出代码是什么?

c++ - 删除 LinkedList 中的前面元素会产生垃圾

c - 为什么我会收到有关链表内字符数组的错误?

c - C 类型之间的区别 int32_t int_least32_t 等

c - 如何在c中运行时声明变量

c - 释放指向字符数组的指针的内存

c - 双链表C编程中反向查看/搜索功能的问题

在现有 LinkedList<T> 中添加新项的 C# 最佳方法?

c - 时间复杂度?