鱼C论坛

 找回密码
 立即注册
查看: 3573|回复: 3

大神帮看看

[复制链接]
发表于 2013-4-15 21:21:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct student    //结构体
{
int age;   
float score;
char sex;
char name[100];
};
void Inputstudent(struct student *ppArr)
{
int i;
int len;

}
int main( )
{
int len;    //定义学生的个数
int i;

struct student  *pArr;  //定义了学生的结构体
printf("请输入学生的个数:\n");
printf("len =  ");
scanf("%d",&len);

pArr = (struct student *) malloc(len * sizeof (struct student));    //分配内存
//输入
for (i = 0;i < len;i++)
{
  printf("请输入第%d个学生的信息:\n",i+1);
  
  printf("name = ");
  scanf("%s",pArr[i].name);  //这里不需要&,因为name本身就是数组首元素地址不能改成 &pArr[i].name
  //printf("\n");
  
  
  printf("age = ");
  scanf("%d",&pArr[i].age);

//getchar();

  printf("sex = ");
   scanf("%c",&pArr[i].sex);
  //printf("\n");
  
  printf("score = ");
  scanf("%f",&pArr[i].score);
  //printf("\n");
  
}



//输出
printf("学生的信息是:\n");
for (i = 0;i < len;i++)
{
  printf("第%d个学生的信息是:\n",i+1);
  printf("name =%s \n",pArr[i].name);
  printf("age =%d \n",pArr[i].age);
  printf("score =%.2f \n",pArr[i].score);
  
  
}

return 0;
}

运行以后就会发现 sex 无法输入,虽然用getchar()可以解决,但是如果把score 模块放在 sex 模块前面,不用getchar( )也可以解决,想问一下是什么原因???

恭候大神给解!!!在此谢过!!!

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-15 21:51:27 | 显示全部楼层
但是如果把score 模块放在 sex 模块前面,不用getchar( )也可以解决,想问一下是什么原因???
不可以吧。sex无法输入跟它们的位置没什么区别呀。sex不能输入是因为我们每次输入按回车键表示这次输入结束。而scanf函数是不会接收回车键,也就是说这个时候输入缓冲区里还有一个字符“回车”,当你这个时候再获取一个字符时,怎么会输入缓冲区里的这个“回车”字符放进去。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-16 09:55:03 | 显示全部楼层

我今天又试了一下,确实跟位置没关系,不知道昨天怎么搞的,呵呵呵···
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-16 21:23:15 | 显示全部楼层
我是VIP,我骄傲!;P
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-3 03:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表