2014-10-27 2 views
-2

Может кто-нибудь объяснить код ниже? Как он меняет порядок символов в строке?Синтаксис C, пожалуйста, объясните этот код snip?


void reverse_string(char *str) 
{ 
/* skip null */ 
if (str == 0) 
{ 
    return; 
} 

/* skip empty string */ 
if (*str == 0) 
{ 
    return; 
} 

/* get range */ 
char *start = str; 
char *end = start + strlen(str) - 1; /* -1 for \0 */ 
char temp; 

/* reverse */ 
while (end > start) 
{ 
    /* swap */ 
    temp = *start; 
    *start = *end; 
    *end = temp; 

    /* move */ 
    ++start; 
    --end; 
} 
+2

Попробуйте выполнить его с помощью отладчика. –

+0

Спасибо, Карл, хорошая идея .. Я делаю это. –

+2

Нет, это довольно хороший код по стандартам C. Арифметика указателя - это то, что вам нужно было сделать. У него даже есть комментарии, чтобы объяснить, что происходит (что редко встречается в мире C). – buffjape

ответ

1

Это меняет местами первый символ и последний символ. Затем он меняет второй символ со следующим последним. И так далее, пока это не будет сделано.

+0

Thaks Dave, «своп второй со следующим последним. И так далее, пока не закончится» Уточненный !!!!!!!! Ницца! –

Смежные вопросы