0

我有一些代码

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。

4

1 回答 1

0

因为告诉您某事物的长度wcslen有多少个字符WriteFile,并且写入字节并且TCHAR是多字节(或两个字节)。因此,您要求WriteFile在传递给它的字符串中写入一半字符。

如果要写入所有字符或以字节为单位获取字符串的大小,可以使用wcslen(frmdata1) * sizeof(TCHAR)

于 2014-03-13T18:55:50.683 回答