我的程序没有将特殊字符串的每个字符替换为输入字符串的空格:
#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
提前谢谢。
答案 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];
}
它应该有用。