标题:求助:gets接收字符串没有成功,反而出现乱码
只看楼主
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
结帖率:88.89%
已结贴  问题点数:20 回复次数:2 
求助:gets接收字符串没有成功,反而出现乱码
//目标是用顺序表做成一个同学录系统
#include<stdio.h>
#include<string.h>
#define MAX 100
typedef struct
{
    char name[30];
    char sex[5];
    int age;
    int id;
}info1;//在这里定义一个结构体的类型,用来存放处理的对象的的信息
typedef struct
{
    info1 info[MAX];
    int len;
}stu;//这是一个顺序表,他的元素类型是我们刚才定义的info1类型的数组
//该系统有以下几个功能:构建数据,查询数据,增添数据,删除数据,排序,我们分别来进行这些功能模块设计
/**********************************************/
    /*功能:创造纪录*/
    /*接口:顺序表指针*/
/*****************************************/
void creatlist(stu *L)
{
    int i;
    printf("请输入记录的多少:");
    scanf("%d",&L->len);//控制长度的变量
    printf("请输入数据:\n姓名    性别    年龄    学号\n");
    for(i=0;i<L->len;i++)
    {
        gets(L->info[i].name);//为什么在此处用gets接收字符串没有成功,反而出现乱码呢?如果改为scanf就可以正常输入输出
        scanf("%s",L->info[i].sex);
        scanf("%d",&L->info[i].age);
        scanf("%d",&L->info[i].id);
    }
}
void output(stu *L)
{
    int i;
    printf("表中的信息为:\n姓名    性别    年龄    学号\n");
    for(i=0;i<L->len;i++)
    {
        printf("%s\t",L->info[i].name);
        printf("%s\t",L->info[i].sex);
        printf("%d\t",L->info[i].age);
        printf("%d\n",L->info[i].id);
    }
}
main()
{
    stu *L,a;
    L=&a;
    creatlist(L);
    output(L);
}
搜索更多相关主题的帖子: 同学录 字符串 结构体 元素 
2011-04-25 19:18
kami_dante
Rank: 2
等 级:论坛游民
帖 子:37
专家分:93
注 册:2010-12-29
得分:10 
gets 不以空格结束,所以printf("请输入数据:\n姓名    性别    年龄    学号\n");  后你输入的姓名    性别    年龄    学号 甚至包括空格都赋给了 L->info[i].name
而gets 又不对接收变量检查,于是内存溢出


[ 本帖最后由 kami_dante 于 2011-4-25 20:49 编辑 ]
2011-04-25 20:47
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:10 
你前一次输入的回车被当做下一次输入时gets所接受的字符了

如果用scanf就会忽略与你的格式化输入不匹配的字符串

                                         
===========深入<----------------->浅出============
2011-04-25 20:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337882-1-1.html




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

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