请问一下 gets(---) 和scanf(“%s”,------)的区别 这个是怎么回事??
#include <string.h>#include <stdio.h>
#include<stdlib.h>
struct student
{
char ming[20];
int shu,yu,ying;
student *next;
};
main()
{
student *p,*x,*head;
x=(student*)malloc(sizeof(student));
printf("\n 名字 :");
gets(x->ming);
printf("\n 数学成绩 :");
scanf("%d",&x->shu);
printf("\n 语文成绩:");
scanf("%d",&x->yu);
printf("\n 英语成绩:");
scanf("%d",&x->ying);
x->next=NULL;
head=p=x;
while (x->ming!="000")
{
x=(student*)malloc(sizeof(student));
printf("\n 名字 :");
scanf("%s",p->ming);
printf("\n 数学成绩 :");
scanf("%d",&x->shu);
printf("\n 语文成绩:");
scanf("%d",&x->yu);
printf("\n 英语成绩:");
scanf("%d",&x->ying);
p->next=x;
x=p;
}
}
这是一道简单的 链表题。
这儿我有两个问题请教一下大家:1:在用 红色 和蓝色 标示出来的 gets() 和 scanf() 这两个不能随意使用 不然有可能 会不能多次输入“名字”(你可以试一试把scanf()换成gets()试一试)。 这是为什么呢?
2:绿色标出的while()的循环条件中 这样是行不通的,你试一试 会发现 它结束不了循环 改为(x->shu!=-1||x->ying!=-1||x->yu!=-1)之类的就可以。但我就是想要用 名字来判断,比如说输入到名字为数字0或000时候结束循环 这该怎么弄 ?为什么要这样呢??
非常感谢!!