c - 使用数组 wchar 时出错

标签 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;
}

有错误:错误 C2106:'=':左操作数必须是左值

有人可以解释一下原因并给出解决方案吗?请!

最佳答案

您不能直接分配给这样的数组。您需要使用 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]));

关于c - 使用数组 wchar 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969087/

相关文章:

CRC8算法说明

c - C- 中的字符串是 char *str 真的等同于 char str [] 吗?

c++ - ANSI代码页中wchar_t char之间的转换

c - 设置 UTF-8 语言环境后使用 fgetws?

c - IAR 链接器在初始化期间将代码从 FLASH 复制到 RAM

c - LittleCMS 库 : which type of variable do I have to use during conversion from rgb (bgr) to cmyk colors

javascript - 对 knockout 中的可观察值列表进行排序

javascript - 插入数组后输出[Obj Obj]、[Obj Obj]

arrays - MATLAB:插值以找到直线和曲线之间交点的 x 值

c++ - GetText() 内存泄漏