Я пытаюсь стать лучше на C++ (знаю немного). Я работаю над массивами символов. Я нашел упражнение, целью которого является изменение массива символов (после преобразования его из целого числа). Я получаю следующую ошибку (с использованием VS2005):Ошибка при попытке изменить массив символов
Ошибка проверки времени выполнения # 2 - Урон вокруг переменной revBuffer был поврежден.
Когда я пошагово код, я заметил следующее:
revBuffer = 0x0012fe40 "100899ÌÌÌÌÌÌÌÌÌÌ998001"
Соответствующий код находится ниже.
char buffer[5];
char revBuffer[5];
int i;
int j=5;
long number = 998001;
itoa(number, buffer, 10);
for(i=0; i<strlen(buffer);i++)
{
revBuffer[j] = buffer[i];
j--;
}
Любая помощь будет замечательной. ТИА!
Просто проследить через код - смотрите на значения индексов, будем будет использоваться в первой итерации цикла for. – Cascabel
Не связано с вашей ошибкой, но вы должны вытащить 'strlen (buffer)' из выражения цикла for for, чтобы он не вычислялся без необходимости в каждом цикле. 'strlen' работает, просматривая всю строку до тех пор, пока не увидит нулевой ограничитель. Я думаю, что оставить «strlen» в цикле будет формой «преждевременной пессимизации» (IMHO). –
@Emile Преждевременная пессимизация, ха-ха. – WhirlWind