「文字列内のすべてのスペースを '%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 文字列を操作するのは危険であることはわかっていますが、変更方法がわかりません...
説明や提案をいただければ幸いです。