Хорошо, поэтому я пытаюсь изменить строку в стиле C в C ++ и получаю странный вывод. Может быть, кто-то может пролить свет?
Вот мой код:
int main(){
char str[] = "string";
int strSize = sizeof(str)/sizeof(char);
char str2[strSize];
int n = strSize-1;
int i =0;
while (&str+n >= &str){
str2[i] = *(str+n);
n--;
i++;
}
int str2size = sizeof(str)/sizeof(char);
int x;
for(x=0;x<str2size;x++){
cout << str2[x];
}
}
Основная идея здесь заключается в том, чтобы просто указать указатель на конец строки и затем прочитать его обратно в новый массив, используя арифметику указателей.
В этом конкретном случае я получаю вывод: "gnirts"
В начале любого вывода есть раздражающий пробел, который, как я предполагаю, является нулевым символом? Но когда я пытаюсь избавиться от него, уменьшая переменную strSize, чтобы исключить его, я получаю другой символ на противоположном конце строки, вероятно, из другого блока памяти.
Есть идеи, как этого избежать? PS: (ребята, вы считаете это хорошей идеей перевернуть строку?)