题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解答:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void replaceSpace(char *str,int length)
{
int i=length-1,j=0;
while(i>=0)//从后往前比较
{
if(str[i]==' ')//若等于空格
{
for(j=length;j>=i;j--)
{
str[j+2]=str[j];//从第i个字符开始到最后一个字符,整体后移两位
}
str[i]='%';
str[i+1]='2';
str[i+2]='0';
length+=2;
}
i--;
}
printf("%s",str);
}
int main()
{
char b[20]="aas sa sa";
replaceSpace(b,strlen(b)+1);
}
附:
C语言字符串定义:
#include <stdio.h>
#include <stdlib.h>
int main()
{
//定义字符串的几种方式
//字符串和字符数组的区别:最后一位是否是空字符
char names1[] = {'j', 'a', 'c', 'k', '\0'};
char names2[50] = "jack";
char * names3 = "jack";
printf("数组所占空间大小:%d\n", sizeof(names1));
printf("数组所占空间大小:%d\n", sizeof(names2));
//动态输入
printf("请输入新名称: ");
scanf("%s", names2);
printf("%s\n", names2);
return 0;
}
/*
注意:
声明存储字符串的数组时,数组大小至少比所存储的字符串多1,因为编译器会自动在
字符串常量的末尾添加空字符\0
*/