1. 程式人生 > >Day 3 --修改自己程式碼的bug

Day 3 --修改自己程式碼的bug

今天一早上我就繼續寫昨晚遺留的一個題目的程式碼,是用C語言模擬使用者登入介面,且只能輸入三次。我思考了一會兒,就用兩個字元陣列來分別存放使用者名稱和密碼,再用迴圈來判斷輸入次數,並呼叫strcmp()函式來檢測密碼是否輸入正確。過了一會兒,我把程式碼寫好了,編譯連線均沒有報錯,我就很高興地輸入起來。結果輸入完第三次後,螢幕會跳出"Debug Error!"提示框在這裡插入圖片描述 然後我就很是納悶,為什麼會這樣呢?接著我就在百度上搜索原因,但並沒有找到我想要的解決方案。最後我把錯誤提示搜尋了以下,原來是陣列越界了。我在程式碼裡這樣寫: char id[] = { 0 } ; char psw[] = { 0 } ; 這顯然是不對的,沒有給陣列一個確定的長度,必然會導致系統無法判斷輸入的字串到底有多長而報錯。 我將這個bug修改後,程式就很好地執行起來。 但是我發現還是有點缺陷,第三次輸入後程序也不檢測輸入是否正確就直接退出了。我想了想,還應該在第三次輸入時加上判斷,這樣功能就更完整了。這分別是我測試錯誤輸入和正確輸入後的結果: 第三次檢測輸入錯誤

第三次檢測輸入正確 在寫這個程式中,我還弄明白了scanf() 函式接收字串和gets()接收字串的不同。前者在接收過程中,遇到空格就視為接收結束,且空格之後的都視為無效。而後者的接收結束標誌是回車鍵。依我愚見在處理字串方面,還是儘量使用<string.h>標頭檔案裡的字元處理函式會好點。 今天恰逢中秋,祝各位博主們節日快樂!