资源链接:https://share.weiyun.com/CxCS4Jyj 密码:7ineil

链接里面附带了一个execl表格

源代码链接:https://github.com/WWIandMC/space/tree/master/calc

初学c语言,目前还比较菜,编写过程中遇到一些问题,通过不懈努力解决,记下来让自己以后少走弯路

开发备忘录

开发环境:vs2010

项目类型:win32控制台程序

输入:三个文本文件

unit.txt 测量单位
data.txt 测量数据
delta.txt 误差极限值

异常判断机制:

  • 文本文件打开失败
  • 文本文件没有数据
  • 内存空间申请失败(malloc函数返回NULL值)
  • data.txt中的数据小数点位数不一致
  • data.txt中的数据有非正数(0或负数)
  • 选择是否检查正负值和选择置信系数时输入非系统提示字符无效

使用说明:

  • 程序将会读入unit.txt里所有的字符串,使用前请仔细检查unit.txt的数据是否正确
  • 此程序保留有效数字功能只能处理到小数点后5位

问题总结

错误1


解决方法
项目->“项目名”属性->配置属性->清单工具->嵌入清单 “是”改成“否”

错误2

全局变量重定义

最开始的写法是在头文件中定义全局变量

//head.hint eps = 0;

编译的时候,只要include了head头文件的就会插入这条语句,于是出现了重定义的错误

正确的写法应该是在头文件里声明链接属性,在main.c里定义变量

//head.h
extern int eps = 0;
//main.c
int eps;

错误3

CRT detected that the application wrote to memory after end of heap buffer:

sprintf是<stdio.h>的库函数 sprintf的说明
strchr是<string.h>的库函数 strchr的说明

程序中识别小数点的方式就是使用sprintf将double类型的数据写进一个字符串当中

 //cnt是小数整数部分的位数c = (char*)malloc(sizeof(char)*cnt+8);///sprintf读入一个双精度类型的数据时,会读入小数点后面6位数字,加上小数点和'\0'就有8个charif(c==NULL){printf("u_Decimal内存申请失败!\n");error = 1;return;}sprintf(c,"%lf", *u);

最开始的代码对malloc的内存空间是没有算进’\0’的位置的
调试运行
malloc在内存中申请到了一块空间,图中cd就是申请到的内存空间,而后面fd和ab是no man`s land 顾名思义就是不允许写入的地方

继续执行


显然,最后的’\0’写到了第一个fd的位置,最后调用free函数释放这一块内存空间时,程序就会崩溃
看了下面这篇blog才意识到问题,看完之后还学会了使用内存窗口查看的调试技巧。
释放内存free()错误:CRT detected that the application wrote to memory after end of heap buffer:内存访问违规

之所以会犯这样的错误,是我在之前的调试中,只仅仅给c分配了一个char的空间也可以写入8个字符,产生了奇怪的错觉。

将bug解决之后,继续执行,到了strchr函数

 c = strchr(c,'.');...free(c);


执行strchr

c的地址改变了

到了free函数 程序崩溃了

问题就在于,strchr函数返回值是第一次出现目标字符位置的地址
而free()里面的指针,必须指向malloc返回的那块内存空间

解决方法
用char *ret来存储strchr返回的地址

 char *ret;...ret = strchr(c,".");...free(c);


把项目上传到自己的github仓库也花了一些时间

ps:如果git提示你需要
$ git --global origin user_mail “yourexample.com”(找不到图了,只记得大概的指令)

照着提示 把uesr_email 和user_name 都输入即可

Git的使用–如何将本地项目上传到Github(两种简单、方便的方法)

github删除库的办法

进入库,点击Settings


进入Setting之后,在网页底找到Danger Zone

点击Delete this repository,完成验证即可

原本上传到github的文本文件下载下来之后变为了二进制文件,后期又把文件打开方式改为"rb"

大物实验-直接测量量不确定度计算器 开发备忘录相关推荐

  1. 大学物理实验不确定度计算器

    大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程. 使用python写了一个不确定度计算器,输入数据个数和数据以及B类 ...

  2. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  3. 科学计算机java算法实现,(Java)科学型计算器开发及实现.doc

    (Java)科学型计算器开发及实现 淮北师范大学 科学型计算器的开发与实现 学 院 计算机科学与技术 专 业学 生 姓 名学 号指导教师姓名科学型计算器的开发与实现 作 者: 指导教师: 摘 要:目前 ...

  4. Unity开发备忘录000021:如何判断某一个对象是否有子对象

    在项目开发中,有时要为某一对象(如X对象)动态添加一个子对象,这就需要判断X对象是否已经具有了子对象,因为是动态实时添加子对象,如果不做这样的判断以及相应的限制,就会给X对象添加上一批相同的子对象,这 ...

  5. Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走

    1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...

  6. Java交互界面实现计算器开发设计【附函数源码】

    使用Java开发的简易计算器,包括加.减.乘.除.平方.立方.小数等运算,适合学习GUI编程实践, 目录 控件触发时集中处理函数 操作符点击后数据转换赋值函数 计算器窗口界面函数 运算符控件 数字控件 ...

  7. 开发备忘录(持续更新)

    开发备忘录 Linux操作命令 解压文件 Windows简单命令操作 杀死进程 删除占用文件的 Linux操作命令 解压文件 解压到指定文件:unzip -d "目录" " ...

  8. Unity开发备忘录000006:用Unity标准着色器构建金属材质效果(二)

    按照Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)所介绍的方法,我们又做了一个如下的模型渲染. 在此基础上我们再给它加一个高度贴图,其立体感的细节会更加丰富,如下图: ...

  9. 微信小程序开发—项目实战之计算器开发

    我参加CSDN博客之星评选啦,感谢大家前往投票支持! 投票地址:http://blog.csdn.net/vote/list.html?keyword=anda0109#search 就像学习一门开发 ...

  10. rdd数据存内存 数据量_大数据开发-Spark调优常用手段

    Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...

最新文章

  1. hdu2196 树形DP
  2. JVM 调优实战--什么是垃圾回收及Java的自动垃圾回收GC
  3. linux常用命令--diff
  4. 深入剖析kafka架构内部原理
  5. web前端(八)——ajax与jsonp
  6. leetcode刷题日记-两数之和系列
  7. SQL高级---SQL ALTER TABLE 语句
  8. Python网络爬虫
  9. 快看这里,如何卸载windows11自动更新下载的文件还你C盘空间
  10. Ubuntu 字体安装以及 vscode字体配置
  11. 单反相机镜头选择tips
  12. python2 与 python3 共存
  13. 大数据分析技术研究报告(一)
  14. 低成本搭建Time Machine 服务器
  15. 使用Excel创建线性回归模型
  16. Excel2010分成两个或者多个独立窗口
  17. Cadence 工具功能分析
  18. linux查看是否开启审计功能,linux审计功能auditd
  19. signature=1e204f749b869312ed61b58560de4b88,Walter F. Wright's Art and Substance in George Meredith
  20. 新冠肺炎数据:美国霍普金斯大学

热门文章

  1. 工程项目管理问题那么多,什么软件可以实现工程项目管理自动化
  2. .bat脚本基本命令合集
  3. Python实现四个经典小游戏合集
  4. 计算机耗材管理系统,办公用品(消耗品)管理系统 单机版
  5. svn 删除文件 上传文件
  6. 2500亿规模,20%年增长,猎头平台化时代,谁的赢面最大? | 一点财经
  7. modelsim 10.7安装教程
  8. UDK安装和编译UEFI程序
  9. turboc7运行C测试 vc6.0测试
  10. Surfer格网文件裁剪