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書き込み、マルチバイト(または2バイト)であるためです。そのため、渡した文字列の文字の半分を書き込むように要求しました。TCHARWriteFile

すべての文字を書き込んだり、文字列のサイズをバイト単位で取得したい場合は、次を使用できますwcslen(frmdata1) * sizeof(TCHAR)

于 2014-03-13T18:55:50.683 に答える