程序是这样的:
cout<<"请输入目标主机的IP地址:"<<endl;
scanf("%d.%d.%d.%d",&Freame[12],&Freame[13],&Freame[14],&Freame[15]);      

cout<<"请输入本机IP地址:"<<endl;
scanf("%d.%d.%d.%d",&Freame[16],&Freame[17],&Freame[18],&Freame[19]);我想把输入的ip赋值给:ip.dstaddr 和 ip.srcaddr比如我输入:192.168.1.100
ip.dstaddr = inet_addr("Freame[12].Freame[13].Freame[14].Freame[15]");   //目标主机的ip 
ip.srcaddr = inet_addr("Freame[16].Freame[17].Freame[18].Freame[19]");   //本机ip这样的话,就出问题了,这个ip.dstaddr 和ip.srcaddr好像都没有被赋值,请问我问题出在哪里了,谢谢!!

解决方案 »

  1.   

    你传进去的是字符串"Freame[12].Freame[13].Freame[14].Freame[15]",而不是实际的值。
    应该这样改下
    char szIp[16] = { 0 };
    _stprintf("%d.%d.%d.%d",Freame[12],Freame[13],Freame[14],Freame[15]);
    ip.dstaddr    = inet_addr("Freame[12].Freame[13].Freame[14].Freame[15]");  //目标主机的ip 
      

  2.   


    char srcAddr[16] = {0};
    char destAddr[16] = {0};
    snprintf(srcAddr, sizeof(srcAddr), "%d.%d.%d.%d", Freame[12], Freame[13], Freame[14], Freame[15]);
    snprintf(destAddr, sizeof(destAddr), "%d.%d.%d.%d", Freame[16], Freame[17], Freame[18], Freame[19]);
    ip.dstaddr = inet_addr(srcAddr);  //目标主机的ip 
    ip.srcaddr = inet_addr(destAddr);  //本机ip 
      

  3.   


    随手写错了,为了不误导别人。改下
    char szIp[16] = { 0 }; 
    _stprintf(szIp,"%d.%d.%d.%d",Freame[12],Freame[13],Freame[14],Freame[15]); 
    ip.dstaddr    = inet_addr("Freame[12].Freame[13].Freame[14].Freame[15]");  //目标主机的ip