当前位置:首页 » 编程语言 » c语言怎么检测

c语言怎么检测

发布时间: 2023-09-02 20:17:43

c语言进阶04-预防、检测及消除bug

01

开发软件不等于编码


写程序时会有"编码-->测试-->调试"的习惯.很不幸,这是开发软件的错误方法.专业的程序员会使用策略来预防、检测及消除软件bug.编码不是在开发软件.编码的意思是在文本编辑器中输入语句.编码只是开发软件的小部分.开发软件需要编程前、编程中、编程后的许多步骤.下面分着讲解.

02

编程前


1、了解需求.

2、考虑可能的输入和期望的输出.

3、识别出有效但非期望的输入和正确的输出.这是对于开发可靠的软件而言是一个关键点.

4、识别出无效输入并找到检测它们的方法.要注意即使输入无效的数据时,程序也不能奔溃.

5、想出解决办法,并记录.

6、设计程序,可以节省大量的时间.

03

编程中


1、若想正确且更快的完成程序, 就写更多的代码.为了满足一个要求而把代码放到一个更大的程序之前,写一个小程序来测试你的解决方案.即单元测试.

2、使用自动缩进的文本编辑器可以帮你检查代码是否对齐,可以节省宝贵的时间.

3、在运行之前一行一行的读代码.可以帮你找到通过测试很难发现的问题.

4、自己想一些测试例子. 若自己不知道自己写的代码,则计算机也不知道.

5、尽量使用函数来重构代码,避免复制代码.

6、要用版本控制系统(这不是废话吗).

7、编译时,警告信息也不要放过.

04

编程后


不要依赖测试,测试只会告诉你程序没有正常工作,不会告诉你程序真的在正常运行.很可能测试用例没有涵盖所有可能的方案.通过测试用例涵盖所有可能的方案是很困难的.

05

常见错误


未初始化变量: 一些人认为所有的变量都会自动初始化为0,C语言中不会初始化.通过测试很难测试出来.

错误数据类型: 需要理解并正确地使用类型,编程语言的趋势是让数据类型更有限制性,防止犯意外的错误.

06

后执行式和交互式调试

调试一个程序分为几个阶段, 举个列子:

1、从一个文件中读取一些整数;

2、把整数排序;

3、把排好序的整数存到另一个文件中;

单元测试: 在上面三部整合之前测试每一部分叫作单元测试.

对于单元测试,经常需要写一些额外的代码,作为单独部分的"驱动".调试可能是交互式或后执行式的.若程序会花费几个小时,你就不会想要用交互式来调试这个程序了.相反,你会想要程序打印出调试信息,即日志.

对交互式调试而言打印调试信息存在多个问题:

1、需要插入代码来打印调试信息.多数情况下,调试信息必须在随后被移除,因为此信息不应该出现在最终的代码和它的输出中.

2、如果有很少的信息,那么就会缺少足够的信息帮助你判断哪里错了.

3、如果信息太多,可以忽略不相关的信息,获得好信息是很困难的.

4、最糟糕的是,问题可能会出现在意想不到的地方,而那里却并未插入调试信息.结果就是添加越来越多的调试信息.这是很耗时的.

07

生产代码与测试代码分离


自己应该能检测出自身bug的程序.编写程序之前就应该考虑编写测试代码.这是普遍的做法,这个称为 测试驱动的开发. 开发的时候需要将测试代码和开发代码分开,这样可以随意删除测试代码.

㈡ C语言如何检测点击的按钮

通常很多情况下,会有这样的事情,就是:

我们在运行某些程序的时候,发现按钮置灰了,比如购买版权或者输入序列号才能够获得访问权限。某个按钮才允许点击。

其实所有的这些东西都是 别的人或者公司利用一些编程语言调用windows的函数,实现的。所以如果我们也能调用windows的函数,那么我们就能够执行一些按钮或者某些东西背后的函数。

自己的mfc还暂时 用不了,不过 可以 试试这个。

调出这个界面,看到有一个置灰的设置按钮。我们可以试着调用这个后面的函数。

/*如何调出来?【在win7环境下】

打开控制面板

点击鼠标。*/

然后利用vs的工具中的spy++ x64。

进入查找窗口。

拖住这个到刚刚鼠标的那个置灰的按钮上面。就可以得到一个句柄。

句柄【在我理解,就是一个话把子,怎么解释,就是,别人说一件事儿,你得顺着往下说才能把话接下来,然后完成你想说的东西。在程序里面,执行到这里,有这样一个句柄,允许我们说话了,我们就从这一点开始,顺着往下说,往往就能得到我们想要的结果】

所以得到了句柄之后。我们可以新建一个工程。

#include <windows.h>

int main(){

SendMessage(0x001607E6,WM_LBUTTONDOWN,0,0);
SendMessage(0x001607E6,WM_LBUTTONUP,0,0);

return 0;
}

//在HWND的第一个参数里面输入刚刚的句柄。

//猜测 第二个参数 是 WindowManager_LeftButtonDown,就是窗口管理器左键按钮点下。

//然后左键按钮弹起。

就强制的往刚刚不能执行的函数里面发送了一个信息。前面的引文介绍说,这就是调用了windows底层的一些函数,如果按钮可以点击,则鼠标点击,按钮按下,当需要注册的时候,或者需要序列号的时候我们并没有,就不能点击。但是当我们给他发送一条消息以后,是不是问题就解决了。

㈢ C语言怎么检查对错

用微软的VC6.0就可以,点编译,就是那个小叹号,如果是语法错误,就会提示你错误,在下面的框里提示你哪行错误,编译不会通过,即你的程序无法运行。
然而这是很简单的,最难的是逻辑错误,即编译可以通过,而运行结果是错误的,和你预想的不一样,而这种错误很难查找,只能用分步式运行,一行一行跟着程序执行看结果和过程,才能检测出来。通常程序员最难解决的错误就是这种逻辑错误。

㈣ c语言编程怎么测试程序的对错

自己好好看看程序吧,别依靠编译器,编译器不是万能的!

1.语法错误
在编译前浏览程序的源代码看看是否有明显的错误。
可以查看由编译器发现的错误。

发现错误——从第一个开始修改,每次修改1~2个,然后重现编译。
发现的错误位置可能比真正的错误要滞后一行。

2.语义错误
比较程序实际得到的结果和预期结果。
跟踪程序,执行步骤——可用EXCEL(语句行×变量值)
在程序的几个关键点处加入额外的printf()语句以监视所选变量的值。
或用调试器。

㈤ c语言,有向图里如何检测是否有环

1、为其定义一个名称,就叫【StackEmpty】。

热点内容
副编译 发布:2025-02-04 02:05:25 浏览:612
解压按摩师 发布:2025-02-04 01:21:31 浏览:424
linuxssh限制 发布:2025-02-04 01:20:40 浏览:697
脚本式是什么 发布:2025-02-04 01:06:24 浏览:248
手机wps密码怎么取消密码 发布:2025-02-04 00:51:44 浏览:596
算法逻辑表 发布:2025-02-04 00:51:44 浏览:241
零售股票如何配置主线 发布:2025-02-04 00:51:07 浏览:948
预算法施行时间是 发布:2025-02-04 00:50:30 浏览:342
世界ol上传照片 发布:2025-02-04 00:34:13 浏览:62
有初始化的数组编译提示重复定义 发布:2025-02-04 00:33:21 浏览:584