c ++使用WriteFile错误添加文本变量

时间:2017-07-21 23:08:42

标签: 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 个答案:

答案 0 :(得分:0)

您必须使用旧编译器,因为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);