大物实验-直接测量量不确定度计算器 开发备忘录
资源链接: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"
大物实验-直接测量量不确定度计算器 开发备忘录相关推荐
- 大学物理实验不确定度计算器
大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程. 使用python写了一个不确定度计算器,输入数据个数和数据以及B类 ...
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
- 科学计算机java算法实现,(Java)科学型计算器开发及实现.doc
(Java)科学型计算器开发及实现 淮北师范大学 科学型计算器的开发与实现 学 院 计算机科学与技术 专 业学 生 姓 名学 号指导教师姓名科学型计算器的开发与实现 作 者: 指导教师: 摘 要:目前 ...
- Unity开发备忘录000021:如何判断某一个对象是否有子对象
在项目开发中,有时要为某一对象(如X对象)动态添加一个子对象,这就需要判断X对象是否已经具有了子对象,因为是动态实时添加子对象,如果不做这样的判断以及相应的限制,就会给X对象添加上一批相同的子对象,这 ...
- Unity开发备忘录000028:Bolt无代码做游戏——控制角色行走
1. 添加角色 (1)添加地面碰撞器 在添加角色之前,先添加一个地面碰撞器,否则添加UnityChan角色后,由于重力的作用,她将坠入深渊. 创建一个空对象,更名为CollierOnGround,为其 ...
- Java交互界面实现计算器开发设计【附函数源码】
使用Java开发的简易计算器,包括加.减.乘.除.平方.立方.小数等运算,适合学习GUI编程实践, 目录 控件触发时集中处理函数 操作符点击后数据转换赋值函数 计算器窗口界面函数 运算符控件 数字控件 ...
- 开发备忘录(持续更新)
开发备忘录 Linux操作命令 解压文件 Windows简单命令操作 杀死进程 删除占用文件的 Linux操作命令 解压文件 解压到指定文件:unzip -d "目录" " ...
- Unity开发备忘录000006:用Unity标准着色器构建金属材质效果(二)
按照Unity开发备忘录000005:用Unity标准着色器构建金属材质效果(一)所介绍的方法,我们又做了一个如下的模型渲染. 在此基础上我们再给它加一个高度贴图,其立体感的细节会更加丰富,如下图: ...
- 微信小程序开发—项目实战之计算器开发
我参加CSDN博客之星评选啦,感谢大家前往投票支持! 投票地址:http://blog.csdn.net/vote/list.html?keyword=anda0109#search 就像学习一门开发 ...
- rdd数据存内存 数据量_大数据开发-Spark调优常用手段
Spark调优 spark调优常见手段,在生产中常常会遇到各种各样的问题,有事前原因,有事中原因,也有不规范原因,spark调优总结下来可以从下面几个点来调优. 1. 分配更多的资源 分配更多的资源: ...
最新文章
- hdu2196 树形DP
- JVM 调优实战--什么是垃圾回收及Java的自动垃圾回收GC
- linux常用命令--diff
- 深入剖析kafka架构内部原理
- web前端(八)——ajax与jsonp
- leetcode刷题日记-两数之和系列
- SQL高级---SQL ALTER TABLE 语句
- Python网络爬虫
- 快看这里,如何卸载windows11自动更新下载的文件还你C盘空间
- Ubuntu 字体安装以及 vscode字体配置
- 单反相机镜头选择tips
- python2 与 python3 共存
- 大数据分析技术研究报告(一)
- 低成本搭建Time Machine 服务器
- 使用Excel创建线性回归模型
- Excel2010分成两个或者多个独立窗口
- Cadence 工具功能分析
- linux查看是否开启审计功能,linux审计功能auditd
- signature=1e204f749b869312ed61b58560de4b88,Walter F. Wright's Art and Substance in George Meredith
- 新冠肺炎数据:美国霍普金斯大学