Объясните, как работает пример из книги - 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;
}

Объяснение кода листинга программы

  1. В данном коде используется функция rrev_print, которая рекурсивно печатает строку в обратном порядке.
  2. В функции main определена переменная str типа char с размером в 256 символов.
  3. Пользователю предлагается ввести строку, которая будет сохранена в переменной str.
  4. С помощью цикла while и условного оператора if происходит проверка корректности ввода строки.
  5. Если строка введена корректно, вызывается функция rrev_print, передавая ей адрес начала строки str.
  6. После вызова функции rrev_print и отправки строки в обратном порядке, выводится сообщение Reversed: и в конце строки добавляется символ новой строки \n.
  7. Цикл продолжается до тех пор, пока пользователь не введет некорректную строку или не отправит сигнал конца файла.
  8. В конце программы возвращается 0, что означает успешное завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы