c语言编写的程序停止运行程序,C语言中,编译成功但运行停止的几个原因
背景导入
微信截图_20180428165124.png
是否有过这样的经历的,当你兴致满满的编译好你的C文件后,运行的时候却出现了这样子的惨痛经历。下面,我将总结几种出现这种问题的原因。
栈区过大
# include "stdio.h"
int main(){
int MB[209715200000];
printf("allocate the memory successfully!");
return 0;
}
当然,为了效果明显,我们故意将只分配弄得特别大,所以这里,我们运行一下可以看到:
$gcc -o main *.c
$main
timeout: the monitored command dumped core
sh: line 1: 72469 Segmentation fault timeout 10s main
错误地址访问
指针偏移
# include "stdio.h"
int main(){
int x;
scanf("%d", x);
printf("运行完成.");
}
结果也是你输入值之后就提示
微信截图_20180428165124.png
#include "time.h"
#include "stdio.h"
#include "string.h"
char *asctime2(const struct tm *timer){
const char wday_name[7][3] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
const char mon_name[12][3] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
static char result[50]; // 用于储存字符串的空间是静态空间
// this is a wrong vison which can cause the program to stop accidently
sprintf(result, "%.3s %.3s %02d %02d:%02d:%02d %4d",
wday_name[timer->tm_wday],
mon_name[timer->tm_mon,
timer->tm_mday,
timer->tm_hour,
timer->tm_min,
timer->tm_sec,
timer->tm_year + 1900]);
return result;
}
int main(){
time_t current;
time(¤t);
struct tm *timer;
timer = localtime(¤t);
char x[100];
strcpy(x, asctime2(timer));
printf("%s\n", x);
return 0;
}
上面这段程序,同样也会报错,而我们认真观察可以看到,在sprintf()的参数中,我们由于码字的时候,把]的位置直接放在了最后面,但这里,编译器并不会报错,而是任其肆意妄为。
而正确的代码应该如下:
sprintf(result, "%.3s %.3s %02d %02d:%02d:%02d %4d",
wday_name[timer->tm_wday],
mon_name[timer->tm_mon],
timer->tm_mday,
timer->tm_hour,
timer->tm_min,
timer->tm_sec,
timer->tm_year + 1900);
指针未初始化就使用了
#include
#include
#define STACK_INIT_SIZE 100
#define SINCREASEMENT 10
typedef int ElemType;
typedef struct stack
{
ElemType *base;
ElemType *top;
int stack_size;
}stack, *ListStack;
void init(ListStack S){
// 分配空间
printf("3\n");
S -> base = malloc(STACK_INIT_SIZE*sizeof(ElemType));
printf("2\n");
if (!S->base){
exit(1); // 分配空间失败
}
printf("1\n");
S -> top = S -> base;
S -> stack_size = STACK_INIT_SIZE;
}
int main(){
ListStack Lstack; // 这里的指针是野指针,指向哪里谁也不知道,所以运行时会报错
init(Lstack);
return 0;
}
这里main函数应该写作
int main(){
stack Lstack;
init(&Lstack);
return 0;
}
数据类型不符合
这种情况下就是和第二种情况类似了。
c语言编写的程序停止运行程序,C语言中,编译成功但运行停止的几个原因相关推荐
- c语言程序命令行,ttyd(C语言编写的命令行程序) v1.3.1 免费版
ttyd是一个C语言编写的命令行程序,可以把任意命令行程序分享到网页上操作,可以看做是个网页版的远程终端,支持 Linux.macOS 系统,还可以运行在 OpenWrt 之类的嵌入式系统上. 功能特 ...
- c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h> void main(void) { EA=1; //开放总中断 ...
- C语言编程编制职工档案管理程序,C语言 编写一个职工档案程序.doc
C语言 编写一个职工档案程序 一.实验项目: 实验6 课程设计 (时间安排:6课时) 二.实验内容: 编写一个职工档案程序,设计实现如下功能: 建立一个职工数据结构,结构包含姓名.序号.性别和年龄信息 ...
- 单片机c语言程序编写步骤,用c语言编写单片机流水灯程序详解
用C语言编写的流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口, ...
- 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序
这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...
- 利用C语言编写放烟花的程序(同时也可以播放音乐)
这是一个利用C语言编写放烟花的程序(同时也可以播放音乐) 代码如下 #pragma once #include<stdio.h> #include<graphics.h> // ...
- 利用C语言编写放烟花的程序(春节专用)
利用C语言编写放烟花的程序(春节专用) #pragma once #include<stdio.h> #include<graphics.h> //图形界面库头文件 #incl ...
- c语言程序编译成功运行失败,为什么这个程序编译成功但运行失败?
为什么这个程序编译成功但运行失败? 可以编译,就是运行失败.请问哪里出问题了. 所示的程序在屏幕上打印函数F(y)=e-y*sin(2πy)的曲线. #include #include #define ...
- 39种语言编写的Hello World程序
Hello World程序 维基百科,自由的百科全书 Hello, World!程序是一个只在计算机屏幕上打印出"Hello, World!"(英语,意为"你好,世界!& ...
最新文章
- SQLServer性能优化之查询提示
- 2020亚太杯数学建模_比赛 | 2020年APMCM亚太地区大学生数学建模竞赛
- MongoDB 语法陷阱(转自51CTO)
- 2013全球移动游戏产业白皮书
- 《让僵冷的翅膀飞起来》系列之五——从容自若的CTO
- js几个页面生成pdf 然后批量打印_太好用了!这款免费PDF工具能够满足你的各种需求...
- [Java] 蓝桥杯ALGO-120 算法训练 学做菜
- VMworld 2016 US带来了哪些惊喜?
- Openresty 学习笔记(三)扩展库之neturl
- 你想要的宏基因组-微生物组知识全在这(2020.8)
- windows 网卡驱动安装
- 一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法
- Excel计算函数(计算机二级)
- 大数据小项目之电视收视率企业项目07
- html怎么调整成苹方,CSS 苹方字体
- 香港城大:首创3D打印磁控微型机器人技术,推动人体送药研究发展
- 十本Android开发学习书籍下载链接
- 手机 9006 端口 不断的闪掉
- matlab二维图像重采样,使用网格插值对图像重采样
- 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds
热门文章
- Linux疑难杂症解决方案100篇(十二)-ubuntu中安装ftp服务器
- LeetCode题组:第322题-零钱兑换
- Cracer渗透视频课程学习笔记——基础知识(1)
- 使用libsvm对MNIST数据集进行实验
- neuroph轻量级神经网络框架
- Java NIO——Selector机制源码分析---转
- CSRF 攻击的应对之道--转
- 中国平安:杀进智能合约,你怕不怕?
- 那些你踩过的币圈投资陷阱(下)
- 今日头条成功的核心技术秘诀是什么?深度解密个性化资讯推荐技术 本文作者:AI研习社	2017-07-05 12:24 导语:从“内行”的角度解密个性化资讯推荐技术。 雷锋网按:本文系知名 IT 技术资