2013-07-31 2 views
0

У меня есть переменная с типом wchar (szDrive), теперь я хочу, чтобы массив и его элемент имели тип wchar. Вот некоторые мой код:ошибка при использовании массива 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

Может кто-нибудь объяснить мне, почему и может дать разрешение? плз!

ответ

0

Вы не можете назначить непосредственно подобный массив. Вам нужно либо использовать тетсру/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])); 
+0

спасибо большое, это решить мою проблему :). Я не понимаю вашего ума, что это значит? можете ли вы привести пример? – Cuong

+0

Я рад, что это помогло - пожалуйста, рассмотрите возможность голосования и/или принятия ответа. Я отредактировал его, чтобы добавить пример на последней части, которую я предполагаю, это то, что вы не поняли. – Vicky

Смежные вопросы