#include <stdio.h>
#include <string.h>
/*
* decode encd with URL, the result saved to decd.
* return point to be decoded string.
* auth: baisoo email:baisoo@msn.com
*/
char *decode( char *encd, char decd[] );
int main( int argc, char *argv[] )
{
if( argc < 2 )
return -1;
char decoded[80];
decode( argv[1], decoded );
printf( "%s/n", decoded );
return 0;
}
char *decode( char *encd, char decd[] )
{
if( encd == NULL )
return (char* )0;
int i, j=0;
char *cd = encd;
char p[2];
unsigned int num;
for( i = 0; i < strlen( cd ); i++ )
{
memset( p, '/0', 2 );
if( cd[i] != '%' )
{
decd[j++] = cd[i];
continue;
}
p[0] = cd[++i];
p[1] = cd[++i];
sscanf( p, "%x", &num );
sprintf(p, "%c", num );
decd[j++] = p[0];
}
decd[j] = '/0';
return decd;
}