Вот метод, который заменяет все пробелы в строке «% 20». Он отлично работает в целом, но жалуется, когда выполнение заканчивается с «Ошибка проверки времени выполнения № 2 - S». Есть ли проблема с моей петлей for?Ошибка проверки времени выполнения # 2 - S, Visual Studio C++
void replaceSpace(char *s) {
int spaces = 0;
for (int i = 0; i < strlen(s); i++) {
if (s[i] == ' ') {
spaces++;
}
}
// new string that includes overwriting space, and two additional chars
int newLen = strlen(s) + spaces * 2;
s[newLen] = '\0';
for (int i = strlen(s) - 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;
}
}
}
char test[] = "rep lace Spac e";
replaceSpace(test);
cout << test << endl; //rep%20lace%20Spac%20e
редактировать: Я побежал это через cpp shell и не было никаких проблем, как ни странно. Я попробую обновить визуальную студию 2015 и отчитаться.
изменить2: Нет, такая же ошибка.
* Кажется, что работа является одной из возможностей неопределенного поведения. –