我正在解决一个“用'%20'替换字符串中的所有空格”的问题。我想对原始字符串进行操作而不是创建一个新字符串。这是我的代码:
void replaceSpaces(char* s, int len) {
int spaceCnt = 0;
for(int i = 0; i < len; ++i) {
if(s[i] == ' '){
++spaceCnt;
}
}
int newlen = len + 2 * spaceCnt;
s[newlen] = '\0';
for(int i = len - 1; i >= 0; --i) {
if(s[i] == ' ') {
s[newlen - 1] = '0';
s[newlen - 2] = '2';
s[newlen - 3] = '%';
newlen -= 3;
} else {
s[newlen - 1] = s[i];
--newlen;
}
}
}
而且我在该行中有一个“线程:exc_bad_access”错误s[newlen] = '\0';
。我知道以这种方式操作 c-stye 字符串很危险,但我不知道如何修改它......
任何解释或建议将不胜感激!