У меня есть следующие простые функции:обратная функция для полукокса * метания ошибки сегментации
void reverse(char* str) {
if (str == NULL)
return;
char* end = str;
while(*end != NULL) {
end++;
}
end--;
while(str < end){
char temp = *str;
*str++ = *end;
*end-- = temp;
}
}
int main(int argc, char* argv[]) {
char* second = "SOMETHING\0";
cout << "Before Reverse String: " << second << '\n';
reverse(second);
cout << "Reverse String: " << second << '\n';
}
просто, правда? однако я получаю ошибку сегментации в строках
*str++ = *end
*end-- = temp
Что мне не хватает?
Спасибо!
Вы изменяете строковым что неопределенное поведение. –
см. [Обратный массив символов] (http://www.cplusplus.com/forum/general/14951/) –
Это недопустимо C++ 11, поскольку вы не можете иметь неконстантный 'char *' для строковый литерал, и вы должны получить предупреждение об этом независимо. Пожалуйста, прислушайтесь к предупреждениям или включите их, а затем сделайте это. – chris