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

问题描述

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

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

解决方案九:

解决方案十:

时间: 2024-11-02 21:05:28

struct-为什么在调试的时候会发生程序异常的相关文章

调试Release发布版程序的Crash错误

http://www.cppblog.com/Walker/archive/2012/11/08/146153.html http://blog.sina.com.cn/s/blog_48f93b530100fsln.html   在Windows平台下用C++开发应用程序,最不想见到的情况恐怕就是程序崩溃,而要想解决引起问题的bug,最困难的应该就是调试release版本了.因为release版本来就少了很多调试信息,更何况一般都是发布出去由用户使用,crash的现场很难保留和重现.本文将给出

利用ASP.NET MVC源代码调试你的应用程序

之前写了一篇博客:利用.NET Framework4.0的源代码调试你的应用程序.那篇文章教你如何利用.NET Framework4.0的源代码帮助你调试应用程序,其实也就是进入.NET Framework4.0源代码进行单步调试.由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试ASP.NET MVC程序的时候,有不明白的地方,就单步进入ASP.NE

已调试好的asp程序在VB中转换为组件的技巧(转)好象也有不少人问过类似的问题

程序|技巧|问题|转换 已调试好的asp程序在VB中转换为组件的技巧 2001年2月3日 在网易虚拟社区的"VB和Basic区"里有一篇<使用VB编写纯ASP程序 [转][Technology] >,其实我认为最好的方法应该这样: 原文中的定义如下: Dim m_objResponse As Response 其实对于我们写过.dll的来说,并不是很好,就是如果要将该程序拿到.asp程序中进行调试时,尤其是我们将已经调试通过的.asp程序做成.dll时,.asp程序里用的是

已调试好的asp程序在VB中转换为组件的技巧

程序|技巧|转换 上传时间:9/11 17:42  作品来源蓝网原创作者Heatch       在网易虚拟社区的"VB和Basic区"里有一篇<使用VB编写纯ASP程序 [转][Technology] >,其实我认为最好的方法应该这样: 原文中的定义如下: Dim m_objResponse As Response     其实对于我们写过.dll的来说,并不是很好,就是如果要将该程序拿到.asp程序中进行调试时,尤其是我们将已经调试通过的.asp程序做成.dll时,.a

使用Eclipse调试iPhone Web应用程序

开始之前 关于本教程 本教程讲述如何使用 Eclipse.Aptana 的 iPhone 开发插件.Aptana 的 Firefox JavaScript 调试器和 Firebug 调试 iPhone Web 应用程序. 目标 使用基于 Eclipse 的 Aptana Studio 提供的各种工具调试针对 iPhone 优化的 Web 应用程序.本教程主要关注如何最佳地调试 JavaScript 和 Ajax 应用程序. 先决条件 读者应当熟悉 iPhone Web 应用程序开发.JavaSc

图片-vs2010软件在调试时无法定位程序输入点

问题描述 vs2010软件在调试时无法定位程序输入点 5C 解决方案 图片打不开了,你的程序是exe还是dll,dll要指定加载进程exe 解决方案二: 看下是不是bug模式 解决方案三: 看看启动项目 是不是当前项目

如何调试Windows Azure应用程序

Windows Azure是一个基于Silverlight的软件,它的开发门户现在也已经焕然一新了.它的所有信息,所有的操作都可以在一个页面中完成.使用这个全新的门户,从配置guest操作系统到停止或重启一个服务,几乎在一个页面上,就可以把所有的事情完成.以下是对Windows Azure应用程序调试的简单介绍 调试应用程序用处十分普遍,可以让开发人员跟踪和修复存在的问题,确保应用程序更加可靠和高效,所以调试应用程序的能力对开发人员来说非常重要. Microsoft Windows Azure开

使用Xdebug调试和优化PHP程序之[1]_php技巧

作者:Haohappy      MSN: haohappy at msn.com Blog: http://blog.csdn.net/haohappy2004 2006-07-04   为什么需要Debugger? 很多PHP程序员调试使用echo.print_r().var_dump().printf()等,其实对于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以看出来(当然可能还需要使用一些时间

c++调试出现xthrow.cpp,程序无法继续,求解。

问题描述 c++调试出现xthrow.cpp,程序无法继续,求解. // exception handling support functions #include _STD_BEGIN CRTIMP2_PURE __declspec(noreturn) void __CLRCALL_PURE_OR_CDECL _Xinvalid_argument(_In_z const char * _Message) { // report an invalid_argument error _THROW_