Dadong丶 发表于 2020-10-30 13:21:14

vs2019……引发异常。

#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);
}

Dadong丶 发表于 2020-10-30 13:21:46

{:10_266:}

sunrise085 发表于 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;//这里你定义的是指针,不是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);
}

乐乐学编程 发表于 2020-10-30 14:18:36

这个问题前两天有人问过,也有人回答过,去论坛翻翻看,或许你这边的答案还没出来,那边你自己已经找到了答案了

Dadong丶 发表于 2020-10-30 17:22:22

sunrise085 发表于 2020-10-30 14:07
错误的地方修改了,并做了注释

我尝试了一下,不管怎么输入,都没办法显示性别。 并且分数,一直是0.0000

sunrise085 发表于 2020-10-30 20:58:37

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

哦,我想起来怎么一回事儿了。
应该是VS2019中scanf改为了scanf_s,后者输入%s的时候是需要给出长度的。所以你不能这样输入,把%s那个单独拿出来试试
反正这个程序用scanf的时候没任何错误
页: [1]
查看完整版本: vs2019……引发异常。