C语言基础问题2 段错误(核心已储存)修改错误的经历
2015-07-14 20:57
323 查看
今天编写了一个程序是关于输出年与日的。要求输入数字月输出英文月,以下是最初的程序:
#include<stdio.h>
int main()
{
int year=0,month=0,day=0;
char str[]={"January","February","March","April","May","June","July","Auguest","September","October","November","December"};
printf("Please input follow this:\n"
"month(1~31) day(1~12) year\n");
scanf("%d %d %d",&month,&day,&year);
printf("%d st %s %d\n",day,str[month-1],year);
return 0;
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
编译出现一堆错误,吓傻了。通过查看错误信息(很久没用指针数组了= =)
![](https://img-blog.csdn.net/20150714205914536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
然后百度后找到这样的程序
#include<stdio.h>
int main()
{
char *s[]= {"Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Setp.","Octo","Nove","Dec."};
char month;
printf("please input the month.\n");
scanf("%d",&month);
printf("\n%s\n",s[month-1]);
return 0;
}
发现要用指针数组初始化= =
但是改了之后可以编译了,但是输入今天的日期的时候问题来了= =继续段错误0.0
![](https://img-blog.csdn.net/20150714210149765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
仔细看程序后发现时参数写错了= =。弄了两个多小时总算弄好了0.0
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
#include<stdio.h>
int main()
{
int year=0,month=0,day=0;
char *str[]={"January","February","March","April","May","June","July","Auguest","September","October","November","December"};
printf("Please input follow this:\n"
"day(1~31) month(1~12) year\n");
scanf("%d %d %d",&day,&month,&year);
printf("%d st %s %d\n",day,str[month-1],year);
return 0;
}
/*程序最开始出现段错误(核心已转存的原因):1、没有使用指针来初始化数组;
2、将month与day的位置写反了,导致输入的时候碰巧输入了大于12的数字,
超过了指针数组初始化的范围*/
#include<stdio.h>
int main()
{
int year=0,month=0,day=0;
char str[]={"January","February","March","April","May","June","July","Auguest","September","October","November","December"};
printf("Please input follow this:\n"
"month(1~31) day(1~12) year\n");
scanf("%d %d %d",&month,&day,&year);
printf("%d st %s %d\n",day,str[month-1],year);
return 0;
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
编译出现一堆错误,吓傻了。通过查看错误信息(很久没用指针数组了= =)
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
然后百度后找到这样的程序
#include<stdio.h>
int main()
{
char *s[]= {"Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Setp.","Octo","Nove","Dec."};
char month;
printf("please input the month.\n");
scanf("%d",&month);
printf("\n%s\n",s[month-1]);
return 0;
}
发现要用指针数组初始化= =
但是改了之后可以编译了,但是输入今天的日期的时候问题来了= =继续段错误0.0
仔细看程序后发现时参数写错了= =。弄了两个多小时总算弄好了0.0
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
#include<stdio.h>
int main()
{
int year=0,month=0,day=0;
char *str[]={"January","February","March","April","May","June","July","Auguest","September","October","November","December"};
printf("Please input follow this:\n"
"day(1~31) month(1~12) year\n");
scanf("%d %d %d",&day,&month,&year);
printf("%d st %s %d\n",day,str[month-1],year);
return 0;
}
/*程序最开始出现段错误(核心已转存的原因):1、没有使用指针来初始化数组;
2、将month与day的位置写反了,导致输入的时候碰巧输入了大于12的数字,
超过了指针数组初始化的范围*/
相关文章推荐
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 探讨C语言的那些小秘密之断言
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- C语言进制转换代码分享
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- Lua教程(四):在Lua中调用C语言、C++的函数
- C语言求幂计算的高效解法
- C语言实现输入一颗二元查找树并将该树转换为它的镜像
- 12个关于C语言的有趣问答