利用strstr来定位并且读取文件中的数据,strncpy和memcpy内容不对

    while (fgets(buf, sizeof(buf), fp) != NULL) {
        JRD_OEM_LOG_INFO(JRD_OEM_LOG_ERROR,"%s",buf);
        point=strstr(buf," ");
        if(point==NULL){
            JRD_OEM_LOG_INFO(JRD_OEM_LOG_ERROR,"can not find space\n");
            fclose(fp);
            return -1;
        }
        eth0_dev_list[i].types=0;
        strncpy(eth0_dev_list[i].ip,buf,strlen(buf)-strlen(point));
       //memcpy(eth0_dev_list[i].ip+strlen(buf)-strlen(point),"\0",1);
        memcpy(eth0_dev_list[i].mac,point+1,MAC_SIZE);
        //memcpy(eth0_dev_list[i].mac+MAC_SIZE,"\0",1);
        i++;
    }

利用fgets获取文件每一行内容并且存到buf,buf读取出来的数据是正确完整的,但是可是利用strcpy或memcpy,获取到数据却比我想要获取都要大,都大于MAC_SIZE和strlen(buf)-strlen(point),这个时候就会获取到下一行的数据,不是我实际想要的

打印出来

               buf数据 198.18.248.4 00:e0:4c:38:00:b9

               point数据  00:e0:4c:38:00:b9

现在只能在获取到数据后手动加上结束符“\0”来让这个字符串可以正确接收

1.memcpy和strncpy获取到数据不会自动补上“\0”?

2.fgets得到的buf不带“\0”,可是打印的时候是有“\0”?

希望有大神可以解答

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值