C++ добавление текстовых переменных с ошибками WriteFile

Моя проблема в том, что когда я использую это:

LPSTR a = "0";
LPSTR b = "1";
LPSTR c = "2";
LPSTR d = "3";
LPSTR e = "4";

TCHAR strex[5];
DWORD x;

myFile = CreateFile("C:\\a.txt", FILE_WRITE_DATA, NULL, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);

TCHAR n[5];
StringCchCopy(n, 5, a);
StringCchCat(n, 5, b);
StringCchCat(n, 5, c);
StringCchCat(n, 5, d);
StringCchCat(n, 5, e);

strex = n;

WriteFile(myFile, strex, (DWORD)(sizeof(strex)), &x, NULL);
CloseHandle(myFile);

Я получаю эту ошибку для этой строки: strex = n; ошибка C2106: '=': левый операнд должен иметь значение l

Если я изменю TCHAR strex[5]; в TCHAR strex; тогда я получаю следующие ошибки:

ошибка C2440: "=": невозможно преобразовать из "TCHAR [5]" в "TCHAR"

а также

ошибка C2664: "WriteFile": невозможно преобразовать параметр 2 из "TCHAR" в "LPCVOID"

Есть ли способ сделать то, что я пытаюсь сделать с другим кодом? Помощь будет оценена.

1 ответ

Решение

Вы должны использовать старый компилятор, так как C2106 - неправильная ошибка. Так должно быть

error C3863: array type 'TCHAR [5]' is not assignable

Когда ты:

TCHAR strex[5];

Вы создаете массив из пяти символов в стеке. Strex - указатель на этот массив. Вы не можете изменить этот указатель. Итак, когда вы:

strex = n;

Вы просите назначить указатель n к указателю strex, Если вы хотите указатель на n затем:

TCHAR* strex= n;

Буду работать. Но вам даже не нужно этого делать, у вас уже есть указатель с n!

WriteFile(myFile, n, (DWORD)(sizeof(n)), &x, NULL);

Другие вопросы по тегам