替换空格
/*
时间:2013.8.20
把字符串的每个空格替换成"%20"。例如输入"we are happy",则输出"we%20are%20happy"。
*/
#include <iostream>
#include <cstring>
using namespace std;
char *replace(char *src)
{
int length = strlen(src);
int space_cnt = 0;
char rep_str[] = "%20";
char *p1 = rep_str;
for(int i = 0; i < strlen(src) + 1; ++i)
if(isspace(src[i]))
space_cnt++;
//修改部分
int indexOfOri = length;
int indexOfNew = indexOfOri + space_cnt * 2;
while(indexOfNew != indexOfOri)
{
if(!isspace(src[indexOfOri]))
src[indexOfNew--] = src[indexOfOri--];
else
{
while(*p1)
src[indexOfNew--] = *p1++;
}
}
return src;
}
int main()
{
const int max_lenght = 80; //修改
char str[max_lenght] = "we are happy";
cout << replace(str) << endl;
return 0;
}
#include <stdio.h>
#include <string.h>
#include <locale.h>
char s[256];
char *p;
int r,n,i;
int main() {
setlocale(LC_ALL,"chs");
while (1) {
printf("请输入一行文字(空行结束),"%%20"将替换为" ","你懂得"将替换为"XXXXXX":\n");
fgets(s,256,stdin);
if ('\n'==s[0]) break;
p=s;
while (1) {
p=strstr(p,"%20");
if (p) {
memmove(p+1,p+3,strlen(p)-3+1);
p[0]=' ';
} else break;
}
p=s;
while (1) {
p=strstr(p,"你懂得");
if (p) {
memmove(p+6,p+6,strlen(p)-6+1);
for (i=0;i<6;i++) p[i]='X';
} else break;
}
printf("%s",s);
}
return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//
char *replace(char *src)
{
int length = strlen(src);
int space_cnt = 0;
char rep_str[] = "02%";
char *p1 = rep_str;
for(int i = 0; i < strlen(src); ++i)
if(isspace(src[i]))
space_cnt++;
int indexOfOri = length;
int indexOfNew = indexOfOri + space_cnt * 2;
while(indexOfNew != indexOfOri){
if(!isspace(src[indexOfOri])){
src[indexOfNew--] = src[indexOfOri--];
}else{
while(*p1)
src[indexOfNew--] = *p1++;
p1 = rep_str;
indexOfOri--;
}
}
return src;
}