memset(hostname,0, sizeof(char) * MAX_PATH)

解决方案 »

  1.   

    兄弟又开始出错落?memset(hostname,0, MAX_PATH)
    你MAX_PATH是怎么定义的?
      

  2.   

    memset(hostname,0.MAX_PATH);这条语句应该也必须要的,它只是初始化这块内存.至于你说的错误,我想八成不是它引起的.你自己再查查.
      

  3.   

    WSAStartup(...) 在程序初始化的地方调用了吗?要不用它试试 gethostbyname(...)
      

  4.   

    memset(hostname,0.MAX_PATH);//如果这句被注释掉的话肯定就是正确的,
    但如果加上它,在使用了gethostname后,hostname为空值,这是为什么???不信你们
    大家自己使用一下........小弟迷惑
    还有人知道吗?
      

  5.   

    gethostname 這個函數的name length 是由要求的.由於這個函數從Unix上
    沿用下來的.股name length要求不小於25.請檢查
      

  6.   

    我的代码 checked by vc.net/////////////////////////////////////////////////
    char hostname[MAX_PATH];
    memset(hostname,0,MAX_PATH); if (gethostname(hostname,MAX_PATH) == SOCKET_ERROR)
    {
    MessageBox(NULL,"得本机名错误!","发生错误!",MB_OK);
    //return;
    }
    AfxMessageBox((CString)hostname); TRACE(_T("hostname %s\n"), hostname);
    //////////////////////////////////////////////////hostname 肯定是取出来的了。好像主要的区别就是
    0.MAX_PATH
    0,MAX_PATH
     .
     ,不知道您是怎么通过编译的。
      

  7.   

    error C2859: d:\vcstu\getip\debug\vc60.pdb is not the pdb file that was used when this precompiled header was created, recreate the precompiled header.
    Error executing cl.exe.是这种错误吗? 如果是:请讲编译目录(Debug, Release)下的文件全删掉重新编译。memset(hostname,0.MAX_PATH);
      上面0后的点号是你故意写的还是不小心,应该用","的,"."永远错误.我在我自己的机子上试验,是对的
    请参考:
    void CGetIPDlg::OnQuary() 
    {
      // TODO: Add your control notification handler code here
      char szHostName[MAX_PATH];
      memset(szHostName,0,MAX_PATH);////char szT[20];
      if(gethostname(szHostName,128)==0)
      {
    m_HostName.SetWindowText(szHostName);
    struct hostent *pHost;
    int i;
    pHost=gethostbyname(szHostName);
    for(i=0; pHost!=NULL&&pHost->h_addr_list[i]!=NULL; i++)
    {
    // char str[100];
    //char addr[20];
    /// int j;
           LPCSTR psz=inet_ntoa(*(struct in_addr*)pHost->h_addr_list[i]);
    m_IPAddr.AddString(psz);
    char pr;
    char* pp=≺
    itoa(i,pp,1);
    m_IPAddr.AddString(pp);
    }
        }
    }

      

  8.   

    再多一句程序某处好像应该有
    AfxSocketInit()
    保证您的代码在此之后就该没问题了吧。
      

  9.   

    if you don't like to use "memset", you can use "ZeroMemory" instead!char hostname[MAX_PATH];
    ZeroMemory(hostname, MAX_PATH)
      

  10.   

    对不起呀!
    我写到CSDN上写错了,但其实我是用的
    memset(hostname,0,MAX_PATH);
    我不相信你们能得到显示出本机的名字!
    是不行的!我试过N遍了
      

  11.   

    跟 我的机子有关系吗?我用的是P4,DDR内存!
    奇怪在P4不能得到值,但在P2上能正常进行,好怪!!!!