Day 3 --修改自己代码的bug

今天一早上我就继续写昨晚遗留的一个题目的代码,是用C语言模拟用户登录界面,且只能输入三次。我思考了一会儿,就用两个字符数组来分别存放用户名和密码,再用循环来判断输入次数,并调用strcmp()函数来检测密码是否输入正确。过了一会儿,我把代码写好了,编译连接均没有报错,我就很高兴地输入起来。结果输入完第三次后,屏幕会跳出"Debug Error!"提示框在这里插入图片描述
然后我就很是纳闷,为什么会这样呢?接着我就在百度上搜索原因,但并没有找到我想要的解决方案。最后我把错误提示搜索了以下,原来是数组越界了。我在代码里这样写:
char id[] = { 0 } ; char psw[] = { 0 } ; 这显然是不对的,没有给数组一个确定的长度,必然会导致系统无法判断输入的字符串到底有多长而报错。 我将这个bug修改后,程序就很好地运行起来。 但是我发现还是有点缺陷,第三次输入后程序也不检测输入是否正确就直接退出了。我想了想,还应该在第三次输入时加上判断,这样功能就更完整了。这分别是我测试错误输入和正确输入后的结果:
第三次检测输入错误
第三次检测输入正确
在写这个程序中,我还弄明白了scanf() 函数接收字符串和gets()接收字符串的不同。前者在接收过程中,遇到空格就视为接收结束,且空格之后的都视为无效。而后者的接收结束标志是回车键。依我愚见在处理字符串方面,还是尽量使用<string.h>头文件里的字符处理函数会好点。
今天恰逢中秋,祝各位博主们节日快乐!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章