//1.有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
//要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
请实现一个函数,把字符数组中的每个空格替换成“%20”。
//要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
#include<stdio.h>
void server(char *str,int ret)
{
int i=0;
int left=0;
int right=ret-1;
for(i=0; i<ret; i++)
{
int tmp=str[left];
str[left]=str[right];
str[right]=tmp;
left++;
right--;
}
}
int main()
{
char str[]="student a am i";
int ret=0;
ret=sizeof(str)/sizeof(str[0]);
server(str,ret);
printf("%s",str);
return 0;
}
2..字符串替换空格:
请实现一个函数,把字符数组中的每个空格替换成“%20”。
例如输入“we are happy.”,则输出“we%20are%20happy.”。
#include<stdio.h>
#include<string.h>
int main()
{
char str[20]="we are happy.";
int i=0;
int j=0;
int n=0;
int len=0;
len=strlen(str);
for(i=0; i< len; i++)
{
if(str[i] == ' ') //计算空格的个数
{
n++;
}
}
i=len;
j=2*n+len; //改变后数组的长度
while(i != j && i >= 0)
{
if(str[i] == ' ') //将空格变为%20
{
str[j--]='0';
str[j--]='2';
str[j--]='%';
i--;
}
else //非空格不变
{
str[j] = str[i];
j--;
i--;
}
}
len=strlen(str);
for(i=0; i<len; i++)
{
printf("%c",str[i]);
}
printf("\n");
return 0;
}