gpt4 book ai didi

C enum 打印错误?

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:40 26 4
gpt4 key购买 nike

在大学里,我们必须编写一个包含结构、枚举和 union 的程序来显示日期, 比如 2014 年 9 月 1 日。我在打印枚举时遇到了一些问题。我在这个论坛上找到了一些解决方案,最后我再也没有控制台错误了。但是每次我尝试运行我的程序时它都会崩溃。也许你们中有人知道导致崩溃的原因:

#include <stdio.h>

enum Monate{JANUAR = 1,
FEBRUAR = 2,
MAERZ = 3,
APRIL = 4,
MAI = 5,
JUNI = 6,
JULI = 7,
AUGUST = 8,
SEPTEMBER = 9,
OKTOBER = 10,
NOVEMBER = 11,
DEZEMBER = 12 };

union Monat{
enum Monate alsMonat;
char alsZahl;
char alsString[10];
};

struct Datum {
char tag;
union Monat monat;
short jahr;
};


const char* welcherMonat(enum Monate meinMonat){
switch(meinMonat){
case JANUAR: return"Januar";
break;

case FEBRUAR: return"Februar";
break;

case MAERZ: return"Maerz";
break;

case APRIL: return"April";
break;

case MAI: return"Mai";
break;

case JUNI: return"Juni";
break;

case JULI: return"Juli";
break;

case AUGUST: return"August";
break;

case SEPTEMBER: return"September";
break;

case OKTOBER: return"Oktober";
break;

case NOVEMBER: return"November";
break;

case DEZEMBER: return"Dezember";
break;
}
}

void ausgabe(struct Datum *datum){
char month[10]=" ";
printf("Tag: %c\n",(*datum).tag);

enum Monate monat2=(*datum).monat.alsMonat;
printf("Monat: %s\n",welcherMonat(monat2));
printf("Jahr: %d\n\n",(*datum).jahr);

}


int main(int argc, char** argv){

struct Datum Geburtstag = {'3',AUGUST,1995};
struct Datum Heute = {'3','12',2014};
struct Datum Millenium = {'1',1,2000};

ausgabe(&Geburtstag);
ausgabe(&Heute);
ausgabe(&Millenium);

return 0;
}

最佳答案

使用 GDB。它是 Gnu DeBugger。在启用 -g 选项的情况下编译您的代码,它将包含所有正确的调试符号。然后,您可以使用 GDB 在程序中放置一个手动中断,一次一行地单步执行它,查看变量,并准确查看它崩溃的位置。

关于C enum 打印错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27320574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com