Невозможно повторно инициализировать массив WCHAR[], как только он получает инициализированный

#visual-studio-2010 #c 11 #visual-c #visual-c -2010 #widechar

#visual-studio-2010 #c 11 #visual-c #visual-c -2010 #widechar

Вопрос:

 While(1)
{
WCHAR wcImageName[80];
if ( pxmlNameTag->GetData(wcImageName, wcslen(wcImageName)) )
{
    if ( !wcscmp(wcImageName, String2) )
       {
           Printf("String matched");
           break;
       }
       else
       {
           Printf("In else");
       }
 }
 else
 {
       Printf("Failed to get the data");
 }
}
}
  

Я повторяю цикл, пока не получу соответствующую строку. getData используется для получения строки в wcImageName. в первый раз я могу получить данные в wcImageName, и они сравниваются со string2. Если не соответствует циклу, повторите 2-й раз. я снова объявляю wcImageName, но getData не может скопировать данные в wcImageName. потому что он инициализирован. я попытался инициализировать его с помощью L’ 0′, но результат тот же.

Комментарии:

1. Что такое While , WCHAR и Printf ? Являются ли они специфичными идентификаторами Visual Studio или это ваши определения, которые отсутствуют в примере? Определение String2 переменной также отсутствует.

2. Можете ли вы показать код pxmlNameTag->getData?

3. Вы пробовали с WCHAR wcImageName[80] {}; ?

4. На самой первой итерации вы вызываете wcslen случайный неинициализированный мусор. Ваша программа демонстрирует неопределенное поведение прямо там. Вы, вероятно, имели в виду _countof(wcImageName)

5. У вас также больше закрывающих фигурных скобок, чем открывающих.