Объясните, как работает пример из книги - C (СИ)
Формулировка задачи:
Я читаю книгу Дэвида и Дона Гриффитса "Изучаем программирование на си", и столкнулся там с непонятным мне примером:
Причем немного подумав, я написал свой код для той же задачи:
и, хоть я и новичок, мне кажется, он выглядит получше, чем пример из книги. Так вот, уважаемые Сишники, объясните мне, пожалуйста, как работает пример из книги, и лучше ли мой код чем книжный. Заранее благодарен
/* * File: main.c * Author: Башка * * Created on 29 августа 2014 г., 1:31 */ #include <stdio.h> #include <stdlib.h> #include <string.h> void reverse_text(char *text) { size_t len = strlen(text); int i; for(i = len; i--; i!=-1) { printf("%c",text[i]); }; } /* * */ int main(int argc, char** argv) { char text[80]; fgets(text, sizeof(text), stdin); reverse_text(text); printf("\n"); system("pause"); return (EXIT_SUCCESS); }
Решение задачи: «Объясните, как работает пример из книги»
textual
Листинг программы
#include <stdio.h> void rrev_print(const char * s) { if ( *s ) { rrev_print(s + 1); printf("%c", *s); } } int main(void) { char str[256]; while ( printf("\nString: ") && scanf("%255[^\n]%*c", str) == 1 && printf("Reversed: ") ) rrev_print(str); return 0; }
Объяснение кода листинга программы
- В данном коде используется функция
rrev_print
, которая рекурсивно печатает строку в обратном порядке. - В функции
main
определена переменнаяstr
типаchar
с размером в 256 символов. - Пользователю предлагается ввести строку, которая будет сохранена в переменной
str
. - С помощью цикла
while
и условного оператораif
происходит проверка корректности ввода строки. - Если строка введена корректно, вызывается функция
rrev_print
, передавая ей адрес начала строкиstr
. - После вызова функции
rrev_print
и отправки строки в обратном порядке, выводится сообщениеReversed:
и в конце строки добавляется символ новой строки\n
. - Цикл продолжается до тех пор, пока пользователь не введет некорректную строку или не отправит сигнал конца файла.
- В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д