有两个结构,
struct CMPPMsgHead
{
UINT Total_Length; 
UINT Command_Id;   
UINT Sequence_Id;   
};
struct CMPPConnect
{
CMPPMsgHead MsgHead;
TCHAR SourceAddr[6];   
TCHAR AuthenticatorSource[16];  
BYTE Version;        
UINT TimeStamp;      
};
现在我要引用这两个结构,把他们合在一起char *buf;
memset(buf,(char)(&MsgHead)+(char)(&Msg),iLen);为什么不对,给我一个正确的答案!谢谢!

解决方案 »

  1.   

    char *buf=(char*)malloc(sizeof(struct CMPPMsgHead)+sizeof(struct CMPPConnect));
    struct CMPPMsgHead MsgHead;
    struct CMPPConnect Msg;memcpy(buf,&MsgHead,sizeof(MsgHead));
    memcpy(buf+sizeof(MsgHead),&Msg,sizeof(Msg));
    是不是这个意思?
      

  2.   

    struct CMPPMsgHead
    {
    UINT Total_Length; 
    UINT Command_Id;   
    UINT Sequence_Id;   
    };
    struct CMPPConnect
    {
    CMPPMsgHead MsgHead;
    TCHAR SourceAddr[6];   
    TCHAR AuthenticatorSource[16];  
    BYTE Version;        
    UINT TimeStamp;      
    };
    struct Combine
    {
            struct CMPPMsgHead head;
            struct CMPPConnect connect;
    };//处理
      

  3.   

    TO,HeShe
    还是有点问题!
    内存出错!
      

  4.   

    我是要将这两个结构体联在一起,然后通过Socket的send函数把他们发送出去
    我现在是把一个结构体定义在另一个结构体里面,但总觉得不灵活。要发送的结构体:
    struct CMPPMsgHead
    {
    UINT Total_Length; 
    UINT Command_Id;   
    UINT Sequence_Id;   
    };
    struct CMPPConnect
    {
    TCHAR SourceAddr[6];   
    TCHAR AuthenticatorSource[16];  
    BYTE Version;        
    UINT TimeStamp;      
    };
    我的定义方法
    struct CMPPMsgHead
    {
    UINT Total_Length; 
    UINT Command_Id;   
    UINT Sequence_Id;   
    };
    struct CMPPConnect
    {
    CMPPMsgHead MsgHead;
    TCHAR SourceAddr[6];   
    TCHAR AuthenticatorSource[16];  
    BYTE Version;        
    UINT TimeStamp;      
    };
    然后把结构体CMPPConnect发送出去,但一直觉得不好,敬听指教!
    万分感谢!!!
      

  5.   

    知道了,我也经常这样做。方法大抵就是我上面说的
    你说内存出错,我侧了一下,好像没问题,
    #include "iostream.h"
    #include "windows.h"
    void main()
    {
    struct CMPPMsgHead
    {
    UINT Total_Length; 
    UINT Command_Id;   
    UINT Sequence_Id;   
    };
    struct CMPPConnect
    {
    CMPPMsgHead MsgHead;
    TCHAR SourceAddr[6];   
    TCHAR AuthenticatorSource[16];  
    BYTE Version;        
    UINT TimeStamp;      
    };char *buf=(char*)malloc(sizeof(struct CMPPMsgHead)+sizeof(struct CMPPConnect));
    struct CMPPMsgHead MsgHead;
    struct CMPPConnect Msg;memcpy(buf,&MsgHead,sizeof(MsgHead));
    memcpy(buf+sizeof(MsgHead),&Msg,sizeof(Msg));}
    把出错程序调一下,要不就把内存出错的代码段贴出来,帮你调调
    或就按HongHuer(洪湖人在广州)的办法,在定一个结构也行