C语言中“段错误”出现的场景
1.第一种“段错误”出现的场景
1 /*************************************************************************
> File Name: goto.c
> Author: Mr.Yang
> Purpose:演示goto的用法 (段错误出现的场景)
> Created Time: 2017年05月19日 星期五 18时36分23秒
************************************************************************/ #include <stdio.h>
#include <stdlib.h> int main(void)
{
int i = ;
int n = ;
start: for(i = ;i<;i++)
{
printf("enter a number between 0 and 10:");
scanf("%d",&n);//当接收用户输入时,scanf函数中未加"&"符号,编译能通过,但是会出现“段错误”这样的错误提示
if(n > || n < )
{
goto start;
}
else if(n == )
{
goto location0;
}
else if(n == )
{
goto location1;
}
else
{
goto location2;
}
} location0:
printf("you entered %d\n",n);
goto end; location1:
printf("you entered %d\n",n);
goto end; location2:
printf("you entered between 2 and 10\n"); end: return ;
}
2.第二种“段错误”出现的场景
1 /*************************************************************************
> File Name: assert.c
> Author: Mr.Yang
> Purpose:演示函数assert的用法
> Created Time: 2017年05月29日 星期一 19时57分54秒
************************************************************************/ #include <stdio.h>
//#define NDEBUG 可禁用assert。此处当我们禁用assert函数,即把这个地方的#define NDEBUG的注释取消后,也即assert不取作用后
#include <assert.h>
#include <stdlib.h> int main(void)
{
FILE *fp; /*以写的方式打开*/
fp = fopen("test.txt","w");
assert(fp);
fclose(fp); /*以只读的方式打开*/
fp = fopen("newtest.txt","r");//当禁用assert后,以只读形式打开不存在的文件时,会出现“段错误”
assert(fp);
fclose(fp);//当禁用assert时程序永远都执行不到这里来 return ;
} 注:为了不影响理解,此“段错误”总结为:fopen以只读形式打开不存在的文件时,会出现“段错误”
C语言中“段错误”出现的场景的更多相关文章
- 为什么for(int i=0;i<9;i++) 在c语言中是错误的?
显示表示,i 变量不可以在for中定义,必须在外面定义,这是为什么? 因为C99标准以前的C标准是不支持临时变量在for循环中定义的. C99标准就支持这样写.但是目前有些编译器并不怎么愿意支持C99 ...
- 如何处理C++构造函数中的错误——兼谈不同语言的错误处理
用C++写代码的时候总是避免不了处理错误,一般来说有两种方式,通过函数的返回值或者抛出异常.C语言的错误处理一律是通过函数的返回值来判断的,一般是返回0.NULL或者-1表示错误,或者直接返回错误代码 ...
- 解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决
编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下. gcc+gdb)输入命令行 运行 sudo apt-g ...
- 关于c语言内存分配,malloc,free,和段错误,内存泄露
1. C语言的函数malloc和free (1) 函数malloc和free在头文件<stdlib.h>中的原型及参数 void * malloc(size_t size ...
- Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争
2006年,编程语言工程师Graydon Hoare利用业余时间启动了Rust语言项目.该项目充分借鉴了C/C++/Java/Python等语言的经验,试图在保持良好性能的同时,克服以往编程语言所存在 ...
- linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)
一.描写叙述 眼下已经linux64位系统中g++4.4.7下发现了该bug.其它的版本号还未測试. 经測试,假设传入wcsncpy函数第一个參数(即目标缓冲区)的地址不能被4整除的话就必然会发生段错 ...
- 在Linux中调试段错误(core dumped)
在Linux中调试段错误(core dumped) 在作比赛的时候经常遇到段错误, 但是一般都采用的是printf打印信息这种笨方法,而且定位bug比较慢,今天尝试利用gdb工具调试段错误. 段错误( ...
- 程序员之---C语言细节24(段错误、类型提升、sizeof 'A')
主要内容:段错误.类型提升.sizeof 'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; i ...
- C/C++中的段错误(Segmentation fault)[转]
Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的. 来自:http://oss.lzu.edu.cn/blog/article.php ...
随机推荐
- k8s资源pod yaml文件分析
apiVersion: v1 kind: Pod_name metadata name: pod_name #描述Pod的名字 namespace: default #描述Pod所在命名空间,如果不设 ...
- exgcd详解
注:本文中所有 \(\%\) 号均表示取模, \(gcd(a,b)\) 表示 \(a\) 和 \(b\) 的最大公因数 1.exgcd是什么? exgcd大名扩展欧几里得算法,用来求形如 \(gcd( ...
- WebSocket实现简易聊天室
前台页面: <html> <head> <meta http-equiv="Content-Type" content="text/html ...
- 详解contextConfigLocation|Spring启动过程详解(转)
原文链接:https://blog.csdn.net/qw222pzx/article/details/78191670 spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题.决定得好好 ...
- 十一、CI框架之输出用户IP地址
一.代码如下: 二.效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- Dubbo与Zookeeper 简介
转自http://blog.csdn.net/congcong68/article/details/41113239 首先说一下Dubbo解决什么问题: (1)当服务越来越多时,服务Url配置管理变得 ...
- js保留的关键字
js保留的关键字 break else new var case finally return void catch for switch while continue function this w ...
- POJ - 2385 Apple Catching (dp)
题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x ...
- CMakeLists添加内部库
SET(RTABMap_LIBRARIES ${PROJECT_SOURCE_DIR}/bin/librtabmap_core.so ${PROJECT_SOURCE_DIR}/bin/librtab ...
- tp5 输入域名即访问指定页面
遇到PC官网类型的项目,经常会遇到隐藏入口文件和输入域名即可打开官网首页的需求.需要修改站点的默认加载文件和伪静态的配置才可以生效. 以下为nginx1.15版本,宝塔面板的修改方式.修改入口文件为w ...