结构体输入字符

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:50:26
int main(void)
{
struct StudType stu[StuNUM],*p;
int i;
char numstr[16];
for (i=0,p=stu;p<stu+StuNUM;p++,i++)
{
printf("\nenter all data of stu[%d]:\n",i);
gets(p->name);
gets(numstr); p->num=atol(numstr);
gets(numstr); p->age=atoi(numstr);
p->sex=getchar(); getchar();(书上说是“吃掉”enter,但是我还是不明白是怎样“吃掉”的,为什么要加上getchar(),如果不加我、会怎样)
gets(numstr); p->score=atof(numstr);
}
完整的程序是
#include<stdlib.h>
#include<stdio.h>
#define StuNUM 3
struct StudType
{
char name[16];
long num;
int age;
char sex;
float score;
};
int main(void)
{
struct StudType stu[StuNUM],*p;
int i;
char numstr[16];
for (i=0,p=stu;p<stu+StuNUM;p++,i++)
{
printf("\nenter all data of stu[%d]:\n",i);
gets(p->name);
gets(numstr); p->num=atol(numstr);

p->sex=getchar(); getchar();//由于getchar()只接受一个字符 所以回车不会被他接受掉 如果不写后面那个getchar(); 回车将会写入 gets(numstr);这里 从而atof(numstr)第一个字符是回车 使得 p->score=0;