宽字符比较问题以下函数,当我office_path传C:\\Test_ppt1.pptx进去后,为什么(_tcscmp(ppt_2003,temp_tem
宽字符比较问题
以下函数,当我office_path传"C:\\Test_ppt1.pptx"进去后,为什么(_tcscmp(ppt_2003,temp_temp) == 0) 不相等?
int Bisencryypt::check_Office_version(TCHAR *office_path)//判断office版本
{
int num = 0;
TCHAR *temp = office_path;
TCHAR *ppt_2003 = _T(".ppt");
TCHAR *doc_2003 = _T(".doc");
TCHAR *xls_2003 = _T(".xls");
TCHAR *pdf = _T(".pdf");
while(*temp != '\0')//
{
++temp;
}
TCHAR *recond = --temp; //减去\0
TCHAR temp_temp[4] = {'\0'};
if(*recond == 'x')
{
--temp;
num += 10; //07加10
}
for(int i = 3; i >= 0; i--)
{
temp_temp[i] = *temp;
--temp;
}
//为什么比较没成立???
if(_tcscmp(ppt_2003,temp_temp) == 0)//07-ppt 11,03-ppt 1
{
num += 1;
return num;
}
if(_tcscmp(doc_2003,temp_temp) == 0)//07-doc 12
{
num += 2;
return num;
}
if(_tcscmp(xls_2003,temp_temp) == 0)//07-xls 13
{
num += 3;
return num;
}
if(_tcscmp(pdf,temp_temp) == 0) //pdf - 14
{
num += 4;
}
return num;
}
[解决办法]
TCHAR temp_temp[4] = {'\0'}; 是4个字符的空间,
for(int i = 3; i >= 0; i--)
{
temp_temp[i] = *temp;
--temp;
}
你向该空间写入了4个字符 .ppt,也就是说temp_temp 没有结束符\0,比较的时候当然不相等
