c html解码,C/C++ URL解码库

我正在开发一个关于linux的c / c程序.如果有任何c / c库解码url,你能告诉我吗?

我正在寻找哪些图书馆

兑换

“HTTP://”

至:

“HTTP://”

要么

“t&t”到“t& t”

谢谢.

解决方法:

我实际上在我正在编写的分析程序中使用了Saul的功能(分析了数百万个URL编码的字符串),虽然它有效,但是在这个规模上,它使我的程序放慢了速度,所以我决定写一个更快的版本.使用GCC和-O2选项编译时,这个速度要快几千倍.它也可以使用与输入相同的输出缓冲区(例如,如果原始字符串在buf中并且要被其解码的对应物覆盖,则urldecode2(buf,buf)将起作用).

编辑:它没有将缓冲区大小作为输入,因为假设缓冲区足够大,这是安全的,因为已知输出的长度总是< =输入的长度,所以要么为输出使用相同的缓冲区,要么创建一个至少为null终止符的输入1的大小,例如:

char *output = malloc(strlen(input)+1);

urldecode2(output, input);

printf("Decoded string: %s\n", output);

编辑2:一位匿名用户试图编辑这个答案以处理”字符的翻译”,我认为应该这样做,再次这不是我申请所需要的,但我在下面添加了它.

这是例程:

#include

#include

void urldecode2(char *dst, const char *src)

{

char a, b;

while (*src) {

if ((*src == '%') &&

((a = src[1]) && (b = src[2])) &&

(isxdigit(a) && isxdigit(b))) {

if (a >= 'a')

a -= 'a'-'A';

if (a >= 'A')

a -= ('A' - 10);

else

a -= '0';

if (b >= 'a')

b -= 'a'-'A';

if (b >= 'A')

b -= ('A' - 10);

else

b -= '0';

*dst++ = 16*a+b;

src+=3;

} else if (*src == '+') {

*dst++ = ' ';

src++;

} else {

*dst++ = *src++;

}

}

*dst++ = '\0';

}

标签:c-3,c,linux

来源: https://codeday.me/bug/20190928/1828662.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值