我有一些代码
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile;
DWORD dwRWBytes;
TCHAR frmdata1[] = _T("-----------------------------7d82751e2bc0858\r\nContent-Disposition: form-data; name=\"file\"; filename=\"C:\\Windows\\Temp\\hi.exe\"\r\nContent-Type: application/octet-stream\r\n\r\n");
TCHAR frmdata2[] = _T("\r\n-----------------------------7d82751e2bc0858--\r\n");
TCHAR hdrs[] = _T("Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858");
hFile = CreateFile(L"D://log.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, frmdata1, wcslen(frmdata1), &dwRWBytes, NULL);
CloseHandle(hFile);
exit(0);
}
我无法理解为什么在log.txt中只有一部分字符串-----------------------------7d82751e2bc0858
Content-Disposition: form-data; name="
有什么问题?当我试图保存frmdata2
时,日志中的字符串也不完整。我该怎么办?我认为wcslen()
函数存在一些问题。另外,我使用的是VC 2008。
答案 0 :(得分:0)
因为wcslen
告诉您有多少个字符有些内容,而WriteFile
写字节和TCHAR
是多个字节(或两个字节)。所以,你已经要求WriteFile
写下你传递给它的字符串中的一半字符。
如果要编写所有字符或获取字节中字符串的大小,可以使用wcslen(frmdata1) * sizeof(TCHAR)