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”?
希望有大神可以解答