C语言中“段错误”出现的场景
2024-10-08 19:17:14
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以只读形式打开不存在的文件时,会出现“段错误”
最新文章
- 文件IO操作..修改文件的只读属性
- 在linux 服务器上用.htaccess文件实现二级域名访问子目录
- Unicode Character Table – Unicode 字符大全
- App 开发:Hybrid 架构下的 HTML5 应用加速方案
- Ubuntu13.04 安装 chrome
- Java——多线程
- IntelliJ IDEA优化总结
- Android中attr自定义属性详解
- python socket 编程之二:tcp三次握手
- CC++初学者编程教程(15) 基于cocos2dx的安卓打包环境
- 第一个CGI程序-----完全就是普通的c语言嘛‘(*∩_∩*)′
- Collection和Map的默认扩容参数
- Python学习之路并发编程--信号量、事件、队列及生产消费模型
- BZOJ4998星球联盟——LCT+并查集(LCT动态维护边双连通分量)
- java和javaScript创建方式
- leetcode-algorithms-32 Longest Valid Parentheses
- Google C++命令规范
- activiti如何获取当前节点以及下一步路径或节点(转)
- CF1142E/1143B Lynyrd Skynyrd
- CentOS中用Nexus搭建maven私服,为Hadoop编译提供本地镜像