C ++ Указатель Вопрос - PullRequest
       2

C ++ Указатель Вопрос

0 голосов
/ 26 марта 2011

Может кто-нибудь сказать мне, что не так с этим кодом?

главный:

    Book* test = new Book;

char* end = "HelloThere";

test->reverseCString(end);



char* Book::reverseCString(char* woot)
{
    char* end = woot;

    while ( *end )
    {
        end++;
    }
    end--;
    // Now we end is at the last letter
    // and woot is at the first
    // now we swap them
    char temp; 
    while ( woot < end ) 
    {
        temp = *woot;
        *woot++ = *end; <--- Problem here during runtime.
        *end-- = temp;      
    }
    return woot;
}

Ответы [ 4 ]

3 голосов
/ 26 марта 2011
char* end = "HelloThere";

Строковый литерал "HelloThere" находится в местоположении только для чтения и не подлежит изменению.

char* Problems::reverseCString(char* woot)
{
    // Both woot and end are pointing to the string literal stored in 
    // read only location.
}
2 голосов
/ 26 марта 2011
char end[] = "HelloThere";

Теперь конец доступен для записи, и вы можете изменить его.

2 голосов
/ 26 марта 2011

const char* end = "HelloThere";

Это исправлено для вас.

Теперь выясните, как сделать копию строки, которую вы можете написатьк этому.

0 голосов
/ 26 марта 2011

Поскольку это тег C ++, почему бы не использовать стандартную библиотеку C ++?

std::string s = "Hello There";
std::reverse(s.begin(), s.end());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...