首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

轮换空格

2013-08-26 
替换空格/*时间:2013.8.20把字符串的每个空格替换成%20。例如输入we are happy,则输出we%20are%20happ

替换空格

/*
时间: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;
}

从字符串尾替换空格,哪里错了啊,求帮助。 替换 字符串
[解决办法]
p1也没有回位……
[解决办法]
仅供参考

#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;
}

热点排行