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

今天一早上我就繼續寫昨晚遺留的一個題目的代碼,是用C語言模擬用戶登錄界面,且只能輸入三次。我思考了一會兒,就用兩個字符數組來分別存放用戶名和密碼,再用循環來判斷輸入次數,並調用strcmp()函數來檢測密碼是否輸入正確。過了一會兒,我把代碼寫好了,編譯連接均沒有報錯,我就很高興地輸入起來。結果輸入完第三次後,屏幕會跳出"Debug Error!"提示框在這裏插入圖片描述
然後我就很是納悶,爲什麼會這樣呢?接着我就在百度上搜索原因,但並沒有找到我想要的解決方案。最後我把錯誤提示搜索了以下,原來是數組越界了。我在代碼裏這樣寫:
char id[] = { 0 } ; char psw[] = { 0 } ; 這顯然是不對的,沒有給數組一個確定的長度,必然會導致系統無法判斷輸入的字符串到底有多長而報錯。 我將這個bug修改後,程序就很好地運行起來。 但是我發現還是有點缺陷,第三次輸入後程序也不檢測輸入是否正確就直接退出了。我想了想,還應該在第三次輸入時加上判斷,這樣功能就更完整了。這分別是我測試錯誤輸入和正確輸入後的結果:
第三次檢測輸入錯誤
第三次檢測輸入正確
在寫這個程序中,我還弄明白了scanf() 函數接收字符串和gets()接收字符串的不同。前者在接收過程中,遇到空格就視爲接收結束,且空格之後的都視爲無效。而後者的接收結束標誌是回車鍵。依我愚見在處理字符串方面,還是儘量使用<string.h>頭文件裏的字符處理函數會好點。
今天恰逢中秋,祝各位博主們節日快樂!

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