struct FileInfo
{
char fileAdd[100];//文件路径
char fileName[50];//文件名
char hostname[100];//主机名
char MD5[32];
char IPA[16];//来源IP
int choosenFlag;
};
/////////////////////////////////////////////
         queue<FileInfo> fileList;
/////////////////////////////////////////////
         FileInfo tempFile,tFile;
getIPA(tempFile);
cout<<"入队列前ip:"<<tempFile.IPA<<endl;
strcpy(tempFile.fileAdd,"D:\\a.jpg");
strcpy(tempFile.fileName,"a.jpg");
strcpy(tempFile.MD5,"1de710e76f0f6d5ae0dc373ce1c5f02d");
tempFile.choosenFlag = 0;
fileList.push(tempFile);
cout<<"入队列后ip:"<<fileList.front().IPA<<endl;
tFile = fileList.front();
cout<<"取队头ip:"<<tFile.IPA<<endl;结果:- -||||

解决方案 »

  1.   

    得不到正确的数据还是怎么的?
    getIPA()这个函数怎么定义的?
      

  2.   

    原来图挂了啊- -||问题就是,
         getIPA(tempFile);
        cout<<"入队列前ip:"<<tempFile.IPA<<endl;                  //打印正确的IP
        strcpy(tempFile.fileAdd,"D:\\a.jpg");
        strcpy(tempFile.fileName,"a.jpg");
        strcpy(tempFile.MD5,"1de710e76f0f6d5ae0dc373ce1c5f02d");
        tempFile.choosenFlag = 0;
        fileList.push(tempFile);
        cout<<"入队列后ip:"<<fileList.front().IPA<<endl;          //为空
        tFile = fileList.front();
        cout<<"取队头ip:"<<tFile.IPA<<endl;                       //也为空
      

  3.   

    我疏忽啦,把getIP换为strcpy(tempFile,"192.168.1.104");就行了
      

  4.   

    什么错误?
    getIPA是引用还是地址呀》
      

  5.   

    getIPA你怎么实现的呢?有修改tmpFile结构体的IPA成员吗?
    getIPA的参数是什么?
    getIPA(FileInfo)? or getIPA(FileInfo&) ??
      

  6.   

    后者
    void getIPA(FileInfo &fileInfo)
    {
    char host_name[170] = "";
    char IPA[16] = "";
    WSAData wsaData;
    WSAStartup(MAKEWORD(2,2), &wsaData);
    gethostname(host_name, sizeof(host_name)); //通过函数int gethostname(char *hostname,int size)获取本机名
    hostent *hent = gethostbyname(host_name);
    in_addr addr;
    memcpy(&addr,hent->h_addr_list[0], sizeof(addr));
    strcpy(IPA,inet_ntoa(addr));
    strcpy(fileInfo.hostname,host_name);
    strcpy(fileInfo.IPA,IPA);
    WSACleanup();
    }