Применение библиотечных функций для работы c символами и символьными рядками - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В символьной строке вывести предпоследнее слово.
Предложение: Мама мыла раму Предпоследнее слово: мыла

Решение задачи: «Применение библиотечных функций для работы c символами и символьными рядками»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ], * pFirst, * pSecond, * pCurrent;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        if ( ! ( pFirst = strtok(buf, DELIM) ) ) {
            fprintf(stderr, "String is empty!\n");
            continue;
        }
        if ( ! ( pSecond = strtok(NULL, DELIM) ) ) {
            fprintf(stderr, "Only one word in string!\n");
            continue;
        }
        
        while ( pCurrent = strtok(NULL, DELIM) ) {
            pFirst = pSecond;
            pSecond = pCurrent;
        }
        
        printf("Second word to last: %s\n", pFirst);
    }
    
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с символами и символьными рядками
  2. Определяем разделитель в виде строки \t\n
  3. Объявляем переменную buf как массив символов (буфер) с фиксированным размером BUFSIZ
  4. Объявляем указатель pFirst, pSecond и pCurrent на первый, второй и последующие слова в строке соответственно
  5. Входим в цикл while, который будет выполняться до тех пор, пока пользователь не введет пустую строку
  6. Проверяем, что строка не пустая. Если это так, то переходим к следующему шагу, иначе выводим сообщение об ошибке и переходим к следующей итерации цикла
  7. Используя функцию strtok, разделяем входную строку на слова и сохраняем первое слово в переменной pFirst
  8. Проверяем, что второе слово не пустое. Если это так, то переходим к следующему шагу, иначе выводим сообщение об ошибке и переходим к следующей итерации цикла
  9. Используя цикл while, разделяем оставшиеся слова в строке и сохраняем их в переменной pCurrent
  10. Обновляем значения pFirst и pSecond, чтобы они указывали на предыдущее и текущее слова соответственно
  11. Повторяем шаг 9 до тех пор, пока не будут использованы все слова в строке
  12. Выводим второе последнее слово на экран
  13. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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