Вывод информации о серверах C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fire64, 6 Mar 2011.

  1. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    Подскажите. что не так в моем коде :

    PHP:
    int GetAdvServInfoNETRESOURCE netres )
    {
        
    printf"Computer: %s\n", ( netres.lpRemoteName ) ); // base offset + 2, for delete '\\'

        
    LPSERVER_INFO_101 pSI101 NULL;

        
    wchar_t wcName[256];
        
    mbstowcs(wcNamenetres.lpRemoteName256);
                
    // Ïîëó÷èì èíôîðìàöèþ î ñåðâåðå
        
    NET_API_STATUS nasRes;

        
    nasRes NetServerGetInfo( (char *)wcName101, (LPBYTE*)&pSI101 );

        if(
    nasRes == NERR_Success )
        {
            
    printf"Server Name: %s\n"pSI101->sv101_name );
            
    printf"Server Comment: %s\n"pSI101->sv101_comment );
            
    printf"Server Version: %d.%d\n"pSI101->sv101_version_majorpSI101->sv101_version_minor );

        }
        else if( 
    nasRes == ERROR_ACCESS_DENIED )
        {
            
    printf"Acces Denied\n" );
        }
        else
        {
            
    printf("NetServerGetInfo failed with %d\n"nasRes);
        }

        if( 
    pSI101 != NULL )
        {
            
    NetApiBufferFree(pSI101);
        }

        return 
    1;
    }
    Дело в том, что sv101_name и sv101_comment, содержат лишь первую букву имени и комментария.

    То есть если имя компьютера "TEST", то sv101_name вернет T
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Code:
    printf( "Server Name: %s\n", pSI101->sv101_name ); 
    надо заменить на
    Code:
    wprintf( L"Server Name: %s\n", pSI101->sv101_name ); 
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    потому что текст в WideChar а ты его выводишь как Char
    %ws ставь