69,370
社区成员
发帖
与我相关
我的任务
分享
char* change(char *str)
{
char *tempstr = malloc(strlen(str) + 1);
//memset(tempstr, 0, sizeof(str) + 1);
int x=0, y=0;
char ascii_1, ascii_2;
while (tempstr[x])
{
/*printf("x=%d\n", x);
printf("y=%d\n", y);*/
if ((tempstr[x] = str[y]) == '%')
{
if (str[y + 1] >= 'A')
{
ascii_1 = str[y + 1] - 55;
}
else
{
ascii_1 = str[y + 1] - 48;
}
if (str[y + 2] >= 'A')
{
ascii_2 = str[y + 2] - 55;
}
else
{
ascii_2 = str[y + 2] - 48;
}
tempstr[x] = ascii_1 * 16 + ascii_2;
y += 2;
}
x++;
y++;
}
/*printf("x=%d\n", x);
printf("y=%d\n", y);*/
tempstr[x] = '\0';
//printf("%s\n", tempstr);
return tempstr;
}
void main()
{
char str[128] = "%D6%DC%C8%BA%BA%A3";
printf("%s", change(str));
system("pause");
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* change(char *str)
{
char *tempstr = (char *)malloc(strlen(str) + 1);
//memset(tempstr, 0, sizeof(str) + 1);
int i = 0, j = 0;
char ascii_1, ascii_2;
while (str[i])
{
printf("%c\n", str[i]);
if (str[i] == '%') {
if (str[i+1] >= 'A')
ascii_1 = str[i+1] - 'A';
else
ascii_1 = str[i+1] - '0';
if (str[i+2] >= 'A')
ascii_2 = str[i+2] - 'A';
else
ascii_2 = str[i+2] - '0';
tempstr[j] = ascii_1 * 16 + ascii_2;
i += 2;
j++;
} else {
i++;
}
/*
if ((tempstr[x] = str[y]) == '%')
{
if (str[y + 1] >= 'A')
{
ascii_1 = str[y + 1] - 55;
}
else
{
ascii_1 = str[y + 1] - 48;
}
if (str[y + 2] >= 'A')
{
ascii_2 = str[y + 2] - 55;
}
else
{
ascii_2 = str[y + 2] - 48;
}
tempstr[x] = ascii_1 * 16 + ascii_2;
y++;
}
x++;
*/
}
/*printf("x=%d\n", x);
printf("y=%d\n", y);*/
tempstr[j] = '\0';
//printf("%s\n", tempstr);
return tempstr;
}
int main()
{
char str[128] = "%D6%DC%C8%BA%BA%A3";
printf("%s", change(str));
system("pause");
return 0;
}
参考一下吧