使用数组wchar时出错

时间:2013-07-31 11:28:55

标签: c arrays wchar

我有一个类型为wchar(szDrive)的变量,现在我想要一个数组,并且它的元素具有类型wchar。 这是我的一些代码:

typedef struct array_wchar{
WCHAR array_char[5];
};
array_wchar array_driveName0[10];
int array_driveName_index0 =0;
WCHAR szDrive[5] = L" :\\";

但是当我写道:

for(int i=0;i<10;i++){
    array_driveName1[i].array_char = szDrive;
}

它有一个错误:error C2106: '=' : left operand must be l-value

有人可以解释我为什么并可以给予解决方案吗? PLZ!

1 个答案:

答案 0 :(得分:0)

您不能直接分配给这样的数组。您需要使用memcpy / strcpy或分配给各个元素:

memcpy(array_driveName0[i].array_char, szDrive, sizeof(array_driveName0[i].array_char));

for (j = 0; j < 5; j++)
{
    array_driveName0[i].array_char[j] = szDrive[j];
}

此外,您似乎引用了array_driveName1,您只声明了array_driveName0。

您的整体结构非常混乱。你有一个结构数组,每个结构只包含一个WCHAR数组 - 为什么不只是有一个数组数组并完全删除结构?

例如:

typedef WCHAR array_char_t[5];
array_char_t array_driveName0[10];
WCHAR szDrive[5] = L" :\\";

memcpy(array_driveName0[i], szDrive, sizeof(array_driveName0[i]));