星域驰骋 发表于 2016-3-20 22:54:39

哥哥们求解

编写的结构体为什么会中断
#include <stdio.h>
#include <stdlib.h>
void print(struct stu student);
struct stu
{
        int num;
        char *name;
        char sex;
        char *dizhi;
};
void print(struct stu student)
{
        printf("the student's num is %d\n", student.num);
        printf("the student's num is %s\n", student.name);
        printf("the student's num is %c\n", student.sex);
        printf("the student's num is %s\n", student.dizhi);

}
void main()
{
        struct stu student1;
       
       
        printf("please input the information of the student :\n");
        printf("please input the student's num:\n");
        scanf_s("%d", &student1.num);
        //getchar();
        printf("please input the student's name:\n");
        scanf_s("%s", &student1.name);
        //getch();
        printf("please input the student'ssex:\n");
        scanf_s("%c", &student1.sex);
        printf("please input the student's dizhi;\n");
        scanf_s("%s", &student1.dizhi);
        print(student1);
}

Angel丶L 发表于 2016-3-21 00:25:07

迅雷速度71KB。亮点

℡.xiao敏 发表于 2016-3-21 01:00:24

本帖最后由 ℡.xiao敏 于 2016-3-21 01:43 编辑



Angel丶L 发表于 2016-3-21 00:25
迅雷速度71KB。亮点

那是百度云管家。并不是迅雷。

还有,出错原因和危险都很多。
首先:

如果
        用户在输入用户号码的时候输入char,会崩。
如果
        用户在输入用户名字的时候输入int,也会崩。

你的%s和%d都要先判断才能植入啊。

还有,你scanf_s来的字符串,存入结构,可你结构里面的都是指针啊,并没有空间呐。你要先有空间才能存字符串啊。所以把结构改下。

还有scanf_s参数还有一个的……scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.

改成这样就可以了:

struct stu
{
        int num;
        char name;
        char sex;
        char dizhi;
};

void print(stu student)
{
        printf("the student's num is %d\n", student.num);
        printf("the student's name is %s\n", student.name);
        printf("the student's sex is %c\n", student.sex);
        printf("the student's dizhi is %s\n", student.dizhi);

}
void main()
{
        stu student1 = {0};        //创建结构先初始化一下。不然就会输出很多莫名其妙的东西。

        printf("please input the information of the student :\n");
        printf("please input the student's num:\n");

        scanf_s("%d", &student1.num);

        printf("please input the student's name:\n");
        scanf_s("%s", &student1.name,128);

        printf("please input the student'ssex:\n");
        scanf_s("%s", &student1.sex,128);

        printf("please input the student's dizhi;\n");
        scanf_s("%s", &student1.dizhi,512);

        print(student1);


        system("pause");
}

Angel丶L 发表于 2016-3-21 01:19:42

℡.xiao敏 发表于 2016-3-21 01:00
那是百度云管家。并不是迅雷。

还有,出错原因和危险都很多。


从小就眼拙。见谅了哈。
你来看看这个
http://bbs.fishc.com/forum.php?mod=viewthread&tid=70164

℡.xiao敏 发表于 2016-3-21 02:01:03

Angel丶L 发表于 2016-3-21 01:19
从小就眼拙。见谅了哈。
你来看看这个
http://bbs.fishc.com/forum.php?mod=viewthread&tid=70164

看了,我相信啊……人家黑客银行数据库都能改。改个Q币有啥不可能呢

星域驰骋 发表于 2016-3-21 07:51:01

℡.xiao敏 发表于 2016-3-21 01:00
那是百度云管家。并不是迅雷。

还有,出错原因和危险都很多。


谢谢你了,刚开始学小甲鱼的C语言结构体谢谢指导

星域驰骋 发表于 2016-3-21 07:52:55

Angel丶L 发表于 2016-3-21 00:25
迅雷速度71KB。亮点

学校校园网这样我也欸办法,我有不是百度云会员,只能看他慢慢的流咯,{:5_107:}

℡.xiao敏 发表于 2016-3-21 17:19:49

星域驰骋 发表于 2016-3-21 07:52
学校校园网这样我也欸办法,我有不是百度云会员,只能看他慢慢的流咯,

可以用破解版百度云管家……嘿嘿,不限速
页: [1]
查看完整版本: 哥哥们求解