mac_05185 2022-06-13 15:26 采纳率: 67.1%
浏览 186
已结题

C语言vs2019对string类型数据报错


//基于C语言的ip地址16进制整型与字符串相转换的简单实现方式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

unsigned int ipv4_str_to_hex(char* str) {
    char ip1[4] = "";
    char ip2[4] = "";
    char ip3[4] = "";
    char ip4[4] = "";
    char* p = str;
    strcpy(ip1, strsep(&p, "."));
    strcpy(ip2, strsep(&p, "."));
    strcpy(ip3, strsep(&p, "."));
    strcpy(ip4, strsep(&p, "."));
    unsigned int ip = atoi(ip1);
    ip = ip * 256 + atoi(ip2);
    ip = ip * 256 + atoi(ip3);
    ip = ip * 256 + atoi(ip4);
    return ip;
}

void ipv4_hex_to_str(unsigned int iphex, char* ipstr) {
    sprintf(ipstr, "%u.%u.%u.%u", (iphex >> 24) & 0xff, (iphex >> 16) & 0xff, (iphex >> 8) & 0xff);
}

int main() {
    char ipstr[64] = "3131372E37342E3133362E33343B";
    unsigned int a;
    a = ipv4_str_to_hex(ipstr);
    printf("hex ip:0x%08x\n", a);
    char ipstr2[64] = "";
    ipv4_hex_to_str(a, ipstr2);
    printf("str ip is: %s\n", ipstr2);
    return 0;
}

这段代码在vs2019环境下编译报错,提示如下:
错误 LNK2019 无法解析的外部符号 strsep,函数 ipv4_str_to_hex 中引用了该符号 Project1 E:\ota_server_client_0606\Project1\Project1\server_main.obj 1

img

这是什么原因导致的?

  • 写回答

2条回答 默认 最新

  • 浪客 2022-06-13 15:55
    关注

    strsep是linux下的,vc没有。
    可以用库函数strpbrk写一个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 husky+kinova jaco2 仿真
  • ¥15 MATLAB数据处理
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的
  • ¥15 硬件IIC从模式的数据发送,中断数据的接收,不能用HAL库(按照时序图)
  • ¥20 QAxWidget上显示一个word文档后,如何直接在该QAxWidget上修改和保存word文档
  • ¥15 Simulink仿真报错,请问如何解决
  • ¥20 宝塔面板无法添加Node项目,一直处于正在添加脚本页面
  • ¥50 Dkeil5 CT107D单片机的程序编写
  • ¥30 Ubuntu20.04中PVN3D复现过程交叉编译问题