Работая с некоторыми проблемами программирования, которые я нашел в Интернете, мне пришлось написать алгоритм для обращения к const char * и вернуть указатель на новый char *. Я думаю, что у меня есть это, но чтобы он работал правильно, мне пришлось делать некоторые неуклюжие вещи - в основном, для того, чтобы сам отвечать за нулевой конец. Как-то я считаю, что это неправильно, но я в тупик, и мне было интересно, если кто-то может помочь мне:Как бы вы улучшили этот алгоритм? (смена строки)
char * reverse(const char * str)
{
int length = strlen(str);
char * reversed_string = new char[length+1];
for(int i = 0; i < length; ++i)
{
reversed_string[i] = str[(length-1) - i];
}
//need to null terminate the string
reversed_string[length] = '\0';
return reversed_string;
}
int main(int argc, char * argv[])
{
char * rev_str = reverse("Testing");
cout << "Your string reversed is this: " << rev_str << endl;
delete rev_str;
rev_str = 0;
return 0;
}
Вы должны использовать delete [], а не просто удалить. – 2008-10-20 18:51:03
Не забудьте проверить строку NULL. – 2008-10-20 18:51:40
спасибо адам и майкл, хорошие советы! – 2008-10-20 18:56:30