| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2176 人关注过本帖
标题:【结构体数组】为什么我的数据被冲掉了,求解
只看楼主 加入收藏
wikkings
Rank: 2
等 级:论坛游民
帖 子:19
专家分:43
注 册:2017-8-28
结帖率:100%
收藏
 问题点数:0 回复次数:8 
【结构体数组】为什么我的数据被冲掉了,求解
愿意是想从键盘输入4个学生的个人资料,但是输第一行按回车之后就出现了输入的数据被冲掉,还有的数据没输就结束了,求解决(附图)
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


搜索更多相关主题的帖子: 结构体 数组 数据 输入 出现 
2017-08-28 14:53
byy_
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-7-25
收藏
得分:0 
回车干扰
getchar什么的去掉干扰
2017-08-28 15:00
wikkings
Rank: 2
等 级:论坛游民
帖 子:19
专家分:43
注 册:2017-8-28
收藏
得分:0 
回复 2楼 byy_
你是说在是scanf();后面加一个getchar();么,我试了一下不行,还是那样。
2017-08-28 15:08
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
贴代码
2017-08-28 15:23
wikkings
Rank: 2
等 级:论坛游民
帖 子:19
专家分:43
注 册:2017-8-28
收藏
得分:0 
回复 4楼 吹水佬
代码如下:
程序代码:
#include<stdio.h>
struct student
    {
        int number;
        char name[20];
        char sex;
        int age;
    }stu[4];
void main()
{
    int i;
    printf("please input 4 student message:\n");
    for(i=0;i<4;i++)
       scanf("%d%s%c%d",&stu[i].number,&stu[i].name,&stu[i].sex,&stu[i].age);
    for(i=0;i<4;i++)
    {
        printf("number=%d\nname=%s\nsex=%c\nage=%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age);
        putchar('\n');
    }

}

   

[此贴子已经被作者于2017-8-28 20:10编辑过]

2017-08-28 20:00
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 5楼 wikkings
试试:
scanf("%d%s%c%d",&stu[i].number,&stu[i].name,&stu[i].sex,&stu[i].age);
改为:
scanf("%d%s %c%d",&stu[i].number,&stu[i].name,&stu[i].sex,&stu[i].age);
2017-08-28 20:55
wikkings
Rank: 2
等 级:论坛游民
帖 子:19
专家分:43
注 册:2017-8-28
收藏
得分:0 
回复 6楼 吹水佬
不行,之后发现了一个问题,修改了一下:我将&stu.name改成了stu.name,好像给字符串赋值不需要&符号,之后的的输入和程序运行如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

然后我在百度之后用了清理键盘缓存区的函数fflush(stdin);代码如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

程序运行如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

前两个结构体变量的成员数据正常,到后面就变成了这种情况,求解答。
2017-08-28 22:18
虾米小小小
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:135
注 册:2017-7-22
收藏
得分:0 
scanf输入的时候最好用空格间隔一下做下区分,其中字符串输入时会在读到空格就终止的.
-----------------------------------------------------------------------------------
#include<stdio.h>
struct student
    {
        int number;
        char name[20];
        char sex;
        int age;
    }stu[4];
int main()
{
    int i;
    printf("please input 4 student message:\n");
    for(i=0;i<4;i++)
       scanf("%d %s %c %d",&stu[i].number,stu[i].name,&stu[i].sex,&stu[i].age);
    for(i=0;i<4;i++)
    {
        printf("number=%d\nname=%s\nsex=%c\nage=%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age);
        putchar('\n');
    }
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-08-28 23:03
wikkings
Rank: 2
等 级:论坛游民
帖 子:19
专家分:43
注 册:2017-8-28
收藏
得分:0 
回复 8楼 虾米小小小
是编译器问题吗?我的是VC++6.0;
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-8-29 12:49编辑过]

2017-08-29 02:10
快速回复:【结构体数组】为什么我的数据被冲掉了,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021049 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved