大家别犯lstrcpy和CString相关的如此低级错误,昨天累了几乎四小时……
测试:
char sTemp[6];
UpdateData();
lstrcpy(sTemp, m_strPass); //m_strPass = "123456",在ClassWizrd中设为CString类型的,限制为6位,就是这个限制为6位迷惑了。
原意是想sTemp[5] = '6',但m_strPass最后的'\0'不要了,节省一个数组,结果导致数组超界,产生了一些意想不到的错误。竟将.h中的char m_sRecent[0][64]值冲掉了。
正确的:
char sTemp[7];
sTemp[6] = 'k'; //这个测试的
UpdateData();
lstrcpy(sTemp, m_strPass); //将m_strPass在ClassWizrd设为6位,大家看sTemp[6]是否不为'k'。
搞到要用Wasm32和Trw2000来查,看是那个冲掉了char m_sRecent[0][64],花了近四小时才找到真凶。