■ URLエンコード(平成16年秋期午後問6)
#include <stdio.h>
/* 基本情報 平成16年秋期午後問6 */
/* URL エンコードプログラム */
int replaceChar(unsigned char c)
{
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') ||
(c >= 'a' && c <= 'z') || c == '@' || c == '*' ||
c == '-' || c == '.' || c == '_') return 0;
return 1;
}
void URLEncode(unsigned char *input, unsigned char *output)
{
const unsigned char chars[] = "0123456789ABCDEF";
while (*input != '\0') {
if (replaceChar(*input)) {
*output++ = '%';
*output++ = chars[*input >> 4];
*output++ = chars[*input & 0x0F];
} else {
*output++ = *input;
}
input++;
}
*output = '\0';
}
/* テスト */
int main()
{
char s[101], d[301];
printf("入力文字列:");
gets(s);
URLEncode(s, d);
printf("出力文字列:%s\n", d);
return 0;
}