鱼C论坛

 找回密码
 立即注册
查看: 1852|回复: 5

[已解决]vs2019……引发异常。

[复制链接]
发表于 2020-10-30 13:21:14 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        struct date
        {
                int month;
                int day;
                int year;
        };
        struct boy1
        {
                int num;
                char* name;
                char sex;
                struct date birthday;
                float score;
        }boy1,boy2;
        printf("输入年月日:\n");
        scanf_s("%d %d %d", &boy1.birthday.year, &boy1.birthday.month, &boy1.birthday.day);
        printf("输入学号,名字,性别,分数:\n");
        scanf_s("%d %s %c %f", &boy1.num, &boy1.name, &boy1.sex, &boy1.score);
        boy2 = boy1;
        printf("学号:%d\n姓名:%s\n性别:%c\n分数:%f\n", boy2.num, boy2.name, boy2.sex, boy2.score);
        printf("出生年月是:%d年%d月%d日。", boy2.birthday.year, boy2.birthday.month, boy2.birthday.day);
}
最佳答案
2020-10-30 14:07:05
错误的地方修改了,并做了注释
#include<stdio.h>
int main()
{
    struct date
    {
        int month;
        int day;
        int year;
    };
    struct boy1
    {
        int num;
        char name[256];//这里你定义的是指针,不是char,没有给指针赋值,是不能用指针读取值的
        char sex;
        struct date birthday;
        float score;
    }boy1,boy2;
    printf("输入年月日:\n");
    scanf_s("%d %d %d", &boy1.birthday.year, &boy1.birthday.month, &boy1.birthday.day);
    printf("输入学号,名字,性别,分数:\n");
    scanf_s("%d %s %c %f", &boy1.num, boy1.name, &boy1.sex, &boy1.score);//%s需要给一个char地址或者一个char数组名,但是你给的是一个指针地址
    boy2 = boy1;
    printf("学号:%d\n姓名:%s\n性别:%c\n分数:%f\n", boy2.num, boy2.name, boy2.sex, boy2.score);
    printf("出生年月是:%d年%d月%d日。", boy2.birthday.year, boy2.birthday.month, boy2.birthday.day);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-30 13:21:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-30 14:07:05 | 显示全部楼层    本楼为最佳答案   
错误的地方修改了,并做了注释
#include<stdio.h>
int main()
{
    struct date
    {
        int month;
        int day;
        int year;
    };
    struct boy1
    {
        int num;
        char name[256];//这里你定义的是指针,不是char,没有给指针赋值,是不能用指针读取值的
        char sex;
        struct date birthday;
        float score;
    }boy1,boy2;
    printf("输入年月日:\n");
    scanf_s("%d %d %d", &boy1.birthday.year, &boy1.birthday.month, &boy1.birthday.day);
    printf("输入学号,名字,性别,分数:\n");
    scanf_s("%d %s %c %f", &boy1.num, boy1.name, &boy1.sex, &boy1.score);//%s需要给一个char地址或者一个char数组名,但是你给的是一个指针地址
    boy2 = boy1;
    printf("学号:%d\n姓名:%s\n性别:%c\n分数:%f\n", boy2.num, boy2.name, boy2.sex, boy2.score);
    printf("出生年月是:%d年%d月%d日。", boy2.birthday.year, boy2.birthday.month, boy2.birthday.day);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 14:18:36 | 显示全部楼层
这个问题前两天有人问过,也有人回答过,去论坛翻翻看,或许你这边的答案还没出来,那边你自己已经找到了答案了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-30 17:22:22 | 显示全部楼层
sunrise085 发表于 2020-10-30 14:07
错误的地方修改了,并做了注释

我尝试了一下,不管怎么输入,都没办法显示性别。 并且分数,一直是0.0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 20:58:37 | 显示全部楼层
Dadong丶 发表于 2020-10-30 17:22
我尝试了一下,不管怎么输入,都没办法显示性别。 并且分数,一直是0.0000


哦,我想起来怎么一回事儿了。
应该是VS2019中scanf改为了scanf_s,后者输入%s的时候是需要给出长度的。所以你不能这样输入,把%s那个单独拿出来试试
反正这个程序用scanf的时候没任何错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-12 19:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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