用特殊字符替换字符串空格

时间:2015-10-24 06:30:42

标签: c++ string

我的程序没有将特殊字符串的每个字符替换为输入字符串的空格:

#include <iostream>
#include <string.h>
using namespace std;

char *replacingSpaces(char s[]){

int last = 0, spacecount = 0;

char *sp = (char *) "$99";
int len = (int) strlen(s);
int lensp = (int) strlen(sp);

for(int i = 0;i<len;i++){
    if(s[i]==' ')spacecount++;
}
if(spacecount == 0) return s;

char *newStr = (char *) malloc((size_t) (spacecount*(lensp-1)+len+1));

for(int i = 0;i<len;i++){
    if(s[i]!=' '){
        newStr[last] = s[i];
        last++;

    }
    else{
        newStr[last] = sp[0];
        newStr[last] = sp[1];
        newStr[last] = sp[2];
        last++;

    }
 }
 newStr[last++] = '\0';


 return newStr;
 }

 int main(){

 char s[100] = "Replace spaces with special characters";
 cout << replacingSpaces(s) << endl;

 return 0;
 }

并且程序的输出如下:

  

Replace9spaces9with9special9characters

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为问题在于增加运算符last++,你必须在newStr[last]内增加它:

for(int i = 0;i<len;i++){
    if(s[i]!=' '){
        newStr[last++] = s[i];


    }
    else{
        newStr[last++] = sp[0];
        newStr[last++] = sp[1];
        newStr[last++] = sp[2];

    }
 }

为什么这么多演员?

答案 1 :(得分:0)

试试这个......

else{
    newStr[last++] = sp[0];
    newStr[last++] = sp[1];
    newStr[last++] = sp[2];
}

它应该有用。