想复杂了。。。
#include <stdio.h>
#include <string.h>
#define M 80
int main()
{
char a[M];
int i;
while(gets(a))
{
if(a[0] == '#') break;
for(i=0;((a[i]!='\0')&&(a[i] != '\n')); i++)
{
if(a[i]==' ') printf("%%20");
else
if(a[i]=='!') printf("%%21");
else
if(a[i]=='$') printf("%%24");
else
if(a[i]=='%') printf("%%25");
else
if(a[i]=='(') printf("%%28");
else
if(a[i]==')') printf("%%29");
else
if(a[i]=='*') printf("%%2a");
else printf("%c",a[i]);
}
printf("\n");
}
return 0;
}
一开始想的是这样的,但是一直出不来结果,不知道是哪里错了,求大神指点。。。
#include<stdio.h>
#include<string.h>
#define N 80
char b[240];
int len, length;
int fun1(char a, int len)
{
int n = len;
switch(a){
case ' ':
a = '0';
len -= 2;
break;
case '!':
a = '1';
len -= 2;
break;
case '$':
a = '4';
len -= 2;
break;
case '%':
a = '5';
len -= 2;
break;
case '(':
a = '8';
len -= 2;
break;
case ')':
a = '9';
len -= 2;
break;
case '*':
a = 'a';
len -= 2;
break;
default:
break;
}
if(n-len == 2)
{
b[len] = '\%';
b[len+1] = '2';
b[len+2] = a;
}
else b[len] = a;
len -= 1;
return 0;
}
int main(){
char a[N];
int i=0;
while(gets(a))
{
len = 0;
length = 0;
if(a[0] == '#') break;
while(a[i] != '\0' )
{
if(a[i] == ' '||a[i] == '!'||a[i] == '$'||a[i] == '%' || a[i] == '('||a[i] == ')'||a[i] == '*')
len++;
length ++;
i++;
}
len = length + 2*len;
b[len+1] = '\0';
while(length--)
{
fun1(a[length], len);
}
printf("%s\n", b);
}
return 0;
}