Объясните, как работает пример из книги - 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, что означает успешное завершение работы программы.