Выделение последнего слова из введенной строки - C (СИ) (247873)

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

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

Написать программу выделения последнего слова из введенной строки.

Решение задачи: «Выделение последнего слова из введенной строки»

textual
Листинг программы
char *p, *str = "some special   ";
    int flag = 1;
    p = str + strlen(str) - 1;
    while (p > str)
    {
        if (*p == ' ') 
            if (flag == 1) 
            { p--; continue; }
            else {
                p++; break;
            }
        flag = 0;
        p--;
    }
    printf("%s\n", p);

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

В данном коде происходит следующее:

  1. Объявляются две переменные:
    • str - указатель на строку some special  ;
    • flag - целочисленная переменная, инициализированная значением 1.
  2. В третьей строке кода переменная p инициализируется значением str + strlen(str) - 1. То есть, p указывает на последний символ в строке some special  .
  3. Затем, в цикле while, который будет выполняться до тех пор, пока p больше str, происходит следующее:
    • Если символ, на который указывает p, равен пробелу, и переменная flag равна 1, то происходит следующее: p--; continue. То есть, p уменьшается на единицу и выполнение цикла продолжается. Это нужно для того, чтобы пропустить пробелы, которые находятся перед последним словом.
    • Если символ, на который указывает p, равен пробелу, и переменная flag равна 0, то происходит следующее: p++; break. То есть, p увеличивается на единицу и выполнение цикла прерывается. Это нужно для того, чтобы выйти из цикла, когда будет найден первый пробел после последнего слова.
    • Переменная flag устанавливается равной 0.
    • p уменьшается на единицу.
  4. По завершению цикла, в p будет указывать на последнее слово в строке.
  5. И, наконец, с помощью функции printf выводится значение переменной p. Таким образом, данный код выделяет последнее слово из введенной строки.

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

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