Скопировать строку TCHAR* из другого потока

Я хочу скопировать данные из другого потока для структурирования и печати. _tpintf() не отображает русские буквы.

в консоли я вижу это, но ожидаю увидеть "IN THREAD текст клиент1". Пожалуйста, объясните, почему tchar не работает? Также я заметил, что если я использую _tcprintf, "клиент1" показывает правильно, но "текст" становится неправильным

Код функции потока, который пытается скопировать данные из другого

static DWORD WINAPI StdinInfo(LPVOID param)
{
   struct msg msg;
   TCHAR buf[1280] = { 0 };
   parameters* p = (parameters*)param;

    while (TRUE)
    {

       _fgetts(buf, 1280, stdin);
       while (_tcslen(buf) > 0 && buf[_tcslen(buf) - 1] == TEXT('\n'))
            buf[_tcslen(buf) - 1] = TEXT('\0');

       buf[128] = TEXT('\0');
       if (!_tcscmp(buf, TEXT("stop")))
       {
            //printf("Terminating...\n");
            msg.isEmpty = 0;
            msg.type = STOP;
            _tcscpy(msg.message, buf);
            _tcscpy(msg.nickName, p->nickName);

            SendMessage(p, &msg);
            break;
       }
       else if (!_tcscmp(buf, TEXT("exit")))
       {
            msg.isEmpty = 0;
            msg.type = DISCONNECT;
            _tcscpy(msg.message, buf);
            _tcscpy(msg.nickName, p->nickName);
            SendMessage(p, &msg);
            break;
       }

       msg.isEmpty = 0;
       msg.type = MESSAGE;
       _tcscpy(msg.message, buf);
       _tcscpy(msg.nickName, p->nickName);

       _tprintf(TEXT(" IN TREAD %s %s\n"), msg.message, p->nickName);

       SendMessage(p, &msg);
   }

   return 0;
 }

0 ответов

Другие вопросы по тегам