You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何提取wchar_t*类型URL中最后一个斜杠后的内容

C语言提取宽字符URL最后一段路径的实现方案

核心思路

不需要完整拆分整个URL,直接调用宽字符库函数查找最后一个斜杠L'/'的位置即可,实现简单且性能更高。

实现代码

方案1:直接返回原字符串内的指针(无需独立副本场景)

返回的指针指向原URL的内存地址,优势是无需额外内存分配,适合不需要长期保存结果、不需要修改结果的场景。

#include <wchar.h>

wchar_t* get_last_url_segment(wchar_t* url) {
    // 查找最后一个斜杠的位置
    wchar_t* last_slash = wcsrchr(url, L'/');
    // 无斜杠时直接返回整个字符串,否则返回斜杠下一个位置的指针
    return last_slash == NULL ? url : last_slash + 1;
}

方案2:返回独立的新wchar_t*副本(符合你的需求)

会新申请堆内存存储结果,和原URL完全独立,修改或释放原URL不会影响结果,用完需要手动free()释放避免内存泄漏。

#include <wchar.h>
#include <stdlib.h>

wchar_t* get_last_url_segment_copy(const wchar_t* url) {
    const wchar_t* last_slash = wcsrchr(url, L'/');
    const wchar_t* seg_start = last_slash == NULL ? url : last_slash + 1;
    // 计算待复制的字符长度,+1是预留宽字符结束符位置
    size_t seg_len = wcslen(seg_start) + 1;
    wchar_t* res = (wchar_t*)malloc(seg_len * sizeof(wchar_t));
    if (res == NULL) {
        // 内存分配失败可根据业务逻辑调整错误处理
        return NULL;
    }
    wcscpy(res, seg_start);
    return res;
}

使用示例

#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    wchar_t url[] = L"https://example.com/test/...../abcde12345";
    wchar_t* last_seg = get_last_url_segment_copy(url);
    if (last_seg != NULL) {
        // 输出结果为abcde12345
        wprintf(L"%ls\n", last_seg);
        // 用完释放内存
        free(last_seg);
    }
    return 0;
}

边界情况补充

如果你的URL可能以斜杠结尾(如https://example.com/test/),可以先跳过末尾的斜杠再执行查找:

wchar_t* get_last_url_segment_trim_trailing(wchar_t* url) {
    size_t len = wcslen(url);
    // 跳过末尾所有连续斜杠
    while (len > 0 && url[len - 1] == L'/') {
        len--;
    }
    if (len == 0) {
        return L"";
    }
    // 临时截断末尾斜杠,不修改原字符串可删除这行,直接从url+len位置往前查找即可
    url[len] = L'\0';
    wchar_t* last_slash = wcsrchr(url, L'/');
    return last_slash == NULL ? url : last_slash + 1;
}

内容的提问来源于stack exchange,提问作者alon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:24:06