在知道了硬伤所在之后,我决定以空间换时间——借用一个变量指向目标字符串的末尾,手动实现字符串的连接。于是我写就了以下代码: void Save(void) { DWORD dwSize, dwReaded, i, j, k; TCHAR szByte[5]; // 读取源文件 hFileSrc = CreateFile(szFileSrc, GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, NULL); dwSize = GetFileSize(hFileSrc, NULL); lpbySrc = NEW(BYTE, dwSize); ReadFile(hFileSrc, (LPVOID)lpbySrc, dwSize, &dwReaded, NULL); // 下面的MYSIZE是一个指示缓冲区大小的宏,由于计算大小较为繁琐且与本文无关,所以此处略去 lpDst = NEW(TCHAR, MYSIZE); *lpDst = '\0'; j = 0; for (i = 0; i < dwSize - 1; i++) { if (i % 16 == 15) // 处理换行 { wsprintf(szByte, "%02X\r\n", lpbySrc[i]); k = 4; } else { wsprintf(szByte, "%02X ", lpbySrc[i]); k = 3; } lstrcpy(&lpDst[j], szByte); j += k; } // 处理最后一个字节
|
正在阅读:VC++学习:字符串黑箱的背后VC++学习:字符串黑箱的背后
2004-03-01 10:18
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键