鱼C论坛

 找回密码
 立即注册
查看: 1254|回复: 0

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

[复制链接]
发表于 2015-9-16 14:23:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

  1. int cltSocketSend(void *handle , int confd,unsigned char *buf,  int datalen )
  2. {
  3.         int ret = 0;
  4.        
  5.         SckHandle *tmp = (SckHandle *)handle;//创建指针来接
  6.        
  7.         ret = write_timeout(confd, tmp->sendtime);//判断超时,,跳过这里没问题
  8.         if(ret == 0)
  9.                 {
  10.                         int write = 0;
  11.                         unsigned char *netdata = (unsigned char *)malloc(datalen + 4);//malloc内存
  12.                         memset(netdata,0,datalen + 4);//初始化内存空间
  13.                         if(netdata == NULL)
  14.                                 {
  15.                                         ret = Sck_ErrMalloc;
  16.                                         printf("fun malloc writen err:%d\n",ret);
  17.                                         return ret;                               
  18.                                 }
  19.                         int netlen = htons(datalen);//地址转换
  20.                         printf("netlen: %d\n",netlen);//这一步的时候地址确实打印出来了
  21.                         strncpy((char *)netdata,(char *)&netlen,4);//关键到这一步的时候
  22.                         printf("netdata:%d\n",*(int *)netdata);//这里在打印netdata的时候居然全是0???主要是一步,实在找不到原因了
  23.                         strncpy((char *)netdata + 4,(char *)buf,datalen);//这是拷贝字符串
  24.                         printf("netlen :%d ----netdata:%d",netlen,netdata[5]);//这里可以打印出来
复制代码

居然在打印netdata的时候全部是0??就是没有吧netlen的数据拷贝到netdata这个内存中去请问你碰到这种情况么?找了一上午了,真是找不到原因了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 04:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表