Пояснить функцию, выводящую строку в обратном порядке - C (СИ)
Формулировка задачи:
функция, выводящая строку в обратном порядке;
буду благодарен, если объясните выделеные моменты.
void print_reverse(char *s)
{
size_t len = strlen(s);
[B]char *t = s+len - 1;[/B] //что произошло здесь?)
[B]while(t>=s) {[/B] //сравниваем адреса?
printf("%c", *t);
t = t-1;
}
[B]puts("");[/B] //обязательно ли это здесь (что она делает?)
}Решение задачи: «Пояснить функцию, выводящую строку в обратном порядке»
textual
Листинг программы
void print_reverse(char *s)
{
size_t len = strlen(s);// len - длинна строки
[B]char *t = s+len - 1;[/B] //t объявлен как указатель на char
//t инициализируется как указатель на последний символ данного слова
[B]while(t>=s) {[/B] //проверяем, не кончилось ли слово(идём с конца по одному символу)
printf("%c", *t);
t = t-1;
}
[B]puts("");[/B] //не обязательно думаю, просто переход на новую строку
}
Объяснение кода листинга программы
- Функция print_reverse() принимает на вход указатель на строку s.
- Внутри функции объявляется переменная len, которая инициализируется значением функции strlen(s). Это длина строки s.
- Затем объявляется указатель t, который инициализируется как указатель на последний символ строки s (s + len - 1).
- Далее в цикле while (t >= s) происходит вывод символа, на который указывает указатель t, с помощью функции printf().
- После вывода символа указатель t сдвигается влево на единицу (t = t - 1).
- Цикл продолжается до тех пор, пока указатель t не станет меньше или равным s.
- В конце функции выводится пустая строка с помощью функции puts().