|
发表于 2018-6-29 01:22:51
|
显示全部楼层
本帖最后由 jiaokai123 于 2018-6-29 02:03 编辑
我修改了楼主的代码暂时不报错 可以编译可以执行。
这一题 用到了 strcpy与strcpy_s的区别 区别为 strcpy 不会考虑长度的情况 而strcpy_s 考虑了。
目前分析到这里 。 明天反汇编详查....
- int ConvUnicode2UniStr(WCHAR *pWchar, WCHAR *pChar, int iBuffSize) 《《修改第二个参数类型为WCHAR
- {
- char subBuff[8];
- int iLength = 0;
- int iMaxLen = wcslen(pWchar);
- for (int i = 0; (i < iMaxLen) && ((iLength + 6) < (iBuffSize - 1)); i++)
- {
- sprintf_s(subBuff, "\\u%04x", pWchar[i]);
- strcpy_s((char*)(WCHAR*)pChar + iLength, iBuffSize, subBuff); 《《强制转换了下第一个参数
- iLength += 6;
- }
- return iLength;
- }
- int main()
- {
- WCHAR *dst = L"hello world";
- WCHAR *outStr = new WCHAR[100];《《修改了类型
- ConvUnicode2UniStr(dst, outStr, 100);
- delete[] outStr;
- printf("aaaa\r\n");;
- getchar();
- }
复制代码 |
|