qw4749105 发表于 2015-9-16 14:23:44

liunx下面的strncpy函数的问题,大神求解

本帖最后由 qw4749105 于 2015-9-16 14:40 编辑

首先,我是在建立客户端框架然后下面这是发送消息部分的代码

int cltSocketSend(void *handle , int confd,unsigned char *buf,int datalen )
{
        int ret = 0;
       
        SckHandle *tmp = (SckHandle *)handle;//创建指针来接
       
        ret = write_timeout(confd, tmp->sendtime);//判断超时,,跳过这里没问题
        if(ret == 0)
                {
                        int write = 0;
                        unsigned char *netdata = (unsigned char *)malloc(datalen + 4);//malloc内存
                        memset(netdata,0,datalen + 4);//初始化内存空间
                        if(netdata == NULL)
                                {
                                        ret = Sck_ErrMalloc;
                                        printf("fun malloc writen err:%d\n",ret);
                                        return ret;                               
                                }
                        int netlen = htons(datalen);//地址转换
                        printf("netlen: %d\n",netlen);//这一步的时候地址确实打印出来了
                        strncpy((char *)netdata,(char *)&netlen,4);//关键到这一步的时候
                        printf("netdata:%d\n",*(int *)netdata);//这里在打印netdata的时候居然全是0???主要是一步,实在找不到原因了
                        strncpy((char *)netdata + 4,(char *)buf,datalen);//这是拷贝字符串
                        printf("netlen :%d ----netdata:%d",netlen,netdata);//这里可以打印出来

居然在打印netdata的时候全部是0??就是没有吧netlen的数据拷贝到netdata这个内存中去请问你碰到这种情况么?找了一上午了,真是找不到原因了
页: [1]
查看完整版本: liunx下面的strncpy函数的问题,大神求解