Copy TCHAR* string from other thread

101 Views Asked by At

I want to copy data from another thread to struct and print. _tpintf() doesnt show russian letters corret.enter image description here

in concole I see this, but I expect to see "IN THREAD текст клиент1". Please explain why tchar doesnt work? Also I noticed that if I use _tcprintf, "клиент1" shows correct, but "текст" become wrong

enter image description here

Code of thread function which tries to copy data from another

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

There are 0 best solutions below