linux下的程序崩潰調試,初級初級但是很容易犯的錯誤

背景:要做的程序是跨平臺的,而且對於一個字符串需要大小寫不敏感。所以想到的辦法是都轉成大寫。在windows下有把字符串轉大寫的函數strupr,但是在linux下卻沒有,於是上網一搜,搜到一段代碼

#ifndef WIN32
char *strupr(char *str){
    char *orign=str;
    for (; *str!='\0 '; str++)
        *str = toupper(*str);
    return orign;
}
#endif

放在程序裏,開始跑到還行,但是後來就經常不定期崩潰。

通過打印定位,就是崩潰在這個函數裏。

瞪大了眼睛,查了半天,終於看到了*str!='\0 ',這裏在0後面多了一個空格。

導致直接飛了。

把空格去掉,一切正常了。

教訓:從網頁上覆制來的代碼一定要好好分辨,仔細檢查,尤其是空格,很難發現。

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