struct HEAD
{
...
char szId[4];
}
이와같이 구조체가 있습니다.
파일에서
fopen을 하고
fread를 통하여
fread(&m_stHead, 1, sizeof(HEAD), pFile); 읽었습니다.
그럼 m_stHead.szId[0] = 'I';
m_stHead.szId[1] = 'D';
m_stHead.szId[2] = 'P';
m_stHead.szId[3] = '3'; 가 들어가 있습니다.
1.그런데 왜 strcmp (m_MD3Header.id, "IDP3");를 하면 다르다고 나오지여?
debug를 하면 m_stHead.szId 이 0x0062bdb4 "IDP3하고 네모나게 검은칠한게 들어있고"게 되어있습니다.
2. 여기서 검은칠이 왜 나오는 건지 궁금하고여.
char ver[4];
sprintf(ver, "%c%c%c%c", m_MD3Header.id[0], m_MD3Header.id[1], m_MD3Header.id[2], m_MD3Hader.id[3]);
strcmp (ver, "IDP3");를 하면 같아고 나오는데..
3.그럼 m_MD3Header.id와 ver은 다르고 m_MD3Header.id[4]와 ver[4]는 다르다는 건가여?
귀찮더라도 답변 부탁드립니다.
감사합니다.
NULL이 없으니 strlen == 4짜리 문자열이 아닌..길이를 알수 없는 문자열이 됩니다.
그래서 디버그창에서 이상한문자가 뒤에 붙는거구요...꼭 NULL 없이 하시려면 strncmp()로 하시면 됩니다.
ver[4]로 strcmp했을때 같다고 나오는게 오히려 이상한..