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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵