为什么在调试的时候会发生程序异常

#define _CRT_SECURE_NO_DEPRECATE

#include

#include

void main() {

struct Member
{
    char  ID[7];

    char   name[10];

    char   sex;

    int  age;

    char  rank;

    union grade
    {
        char  vip;
        int   gen;


    }mem_grade;

    int  points;


}mem;

printf("请输入会员信息:\n");
printf("会员编号:");

scanf("%s", &mem.ID);

printf("会员姓名:");

scanf("%s", mem.name);

printf("会员性别:");

    scanf("%c", &mem.sex);

    getchar();

    printf("会员年龄:");

    scanf("%d", &mem.age);

    getchar();

    printf("会员等级:");

    scanf("%c", &mem.rank);

    getchar();

    if (mem.rank == 'v') {

        printf("VIP级别。\n");
        scanf("%c", &mem.mem_grade.vip);
    }

    else   if (mem.rank == 'g') {

        printf("普通会员级别。\n");
        scanf("%d", mem.mem_grade.gen);

    }

    printf("ID   name   sex   age   rank    级别\n");

    printf("%s    %s    %c    %d    %c    ", mem.ID, mem.sex, mem.sex, mem.age, mem.rank);

    if (mem.rank == 'v')  printf("    %c", mem.mem_grade.vip);
    else  printf("    %d", mem.mem_grade.gen);

    system("pause");

}

把代码贴全了。
#include 后面是什么?

#include

#include

 scanf("%s", &mem.ID);
 改为:
 scanf("%s", mem.ID); //ID是数组,不用再加&
scanf("%d", mem.mem_grade.gen);
改为:
scanf("%d", &mem.mem_grade.gen);

     printf("%s    %s    %c    %d    %c    ", mem.ID, mem.sex, mem.sex, mem.age, mem.rank);
改为:
    printf("%s    %s    %c    %d    %c    ", mem.ID, mem.name, mem.sex, mem.age, mem.rank);

 #include <stdio.h>
#include <stdlib.h>

但是还是会出现异常

什么异常?贴出来看看。


#include "stdafx.h"
#include <stdlib.h>

void main() 
{
struct Member
{
    char  ID[7];
    char   name[10];
    char   sex;
    int  age;
    char  rank;

    union grade
    {
        char  vip;
        int   gen;
    }mem_grade;

    int  points;
}mem;

printf("请输入会员信息:\n");
printf("会员编号:");

scanf("%s",mem.ID);
printf("会员姓名:");
scanf("%s", mem.name);
printf("会员性别:");
    scanf("%c", &mem.sex);
    getchar();

    printf("会员年龄:");
    scanf("%d", &mem.age);
    getchar();
    printf("会员等级:");
    scanf("%c", &mem.rank);
    getchar();

    if (mem.rank == 'v') {
        printf("VIP级别。\n");
        scanf("%c", &mem.mem_grade.vip);
    }

    else   if (mem.rank == 'g') {
        printf("普通会员级别。\n");
        scanf("%d", &mem.mem_grade.gen);
    }

    printf("ID   name   sex   age   rank    级别\n");
    printf("%s    %s    %c    %d    %c    ", mem.ID, mem.name, mem.sex, mem.age, mem.rank);

    if (mem.rank == 'v')  printf("    %c", mem.mem_grade.vip);
    else  printf("    %d", mem.mem_grade.gen);

    system("pause");
}

图片说明

图片说明