64,282
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include <locale.h>
char s[]="%26nbsp%3B%u5BF9%u65B9%u7B54%u590D";
char *p;
int i,j,r,n,v;
wchar_t w1[100];
wchar_t *pw;
void urldecode() {
p=s;
i=0;
while (1) {
r=sscanf(p,"%%%2X%n",&v,&n);
if (r==EOF) break;
if (r==1) {
w1[i]=(wchar_t)v;
p+=n;
i++;
} else {//r==0
r=sscanf(p,"%%u%4X%n",&v,&n);
if (r==EOF) break;
if (r==1) {
w1[i]=(wchar_t)v;
p+=n;
i++;
} else {//r==0
w1[i]=(wchar_t)p[0];
p++;
i++;
}
}
}
}
void wstrrep(wchar_t *a,wchar_t b) {
pw=w1;
while (1) {
pw=wcsstr(pw,a);
if (pw) {
memmove(pw+1,pw+wcslen(a),2*(wcslen(pw)-wcslen(a)+1));
pw[0]=b;
} else break;
}
}
void htmldecode() {
wstrrep(L" ",L' ');
wstrrep(L"&",L'&');
wstrrep(L""",L'\"');
wstrrep(L"<",L'<');
wstrrep(L">",L'>');
}
int main() {
_wsetlocale(LC_ALL,L"chs");
urldecode();
wprintf(L"[%s]\n",w1);
htmldecode();
wprintf(L"[%s]\n",w1);
return 0;
}
//[ 对方答复]
//[ 对方答复]
//