Нужна ваша помощь со строками

Я понимаю что вопрос будет звучать из разряда напишите мне код. У меня вообще нет идей как это сделать, ведь я только начал учится и перед тем как задать вопрос сюда, я уже облазил пол интернета где не нашёл ответа, а если и находил то очень сложным языком что я ничего не понимаю, а мне надо разобраться, а я читал пособник по си и там я находил только определённые функции и их использование но чёткого ответа на вопрос не книга не я после её прочтения дать не могу. Искренне рассчитываю на вашу помощь.

Мне нужно что бы пользователь ввёл в строку слова который разделяются пробелами, за тем программа вывела подстроку которая будет без первого и последнего слова разделенных пробелами.И желательно что бы человек который мне поможет дал хотя бы минимальное объяснение как он это сделал.


Ответы (3 шт):

Автор решения: Igor

Данную задачу я не могу ещё мельче разбить

Хорошо. С этим я могу Вам помочь.

Задача в вопросе включает в себя следующие подзадачи.

  1. Прочитать строку введенную пользователем.

  2. Найти, где в этой строке начинается второе слово - первый непробел после первого пробела после первого непробела.

  3. Найти, где в этой строке заканчивается предпоследнее слово - последний непробел перед последним пробелом.

  4. Вывести подстроку строки из 1. от 2. до 3.

→ Ссылка
Автор решения: OYBEK RUSTAMOV

Я вам код не буду писать.
Вот алгоритм (на основе что я понял выше описанное)
1. Вводим текст, состоящий из n слов.
2. Разбираем его на массив, каждое слово из текста - это один элеиент текстового массива. (string)
3. Выводим тот самый массив, начиная с 1 до n-2 (в случае если массив загружали слова начиная с индекса 0) элемента.
Например: Иммеем текст

Привет мир это моя программа

в нашем случае:

Привет - [0]
мир - [1]
это - [2]
моя - [3]
программа - [4]

и мы просто выводим массив начиная с 1 до 3. Как я писал выше, мы начали массив зополнять с 0 элемента.

→ Ссылка
Автор решения: Sergey

Вот решение:

#include <stdio.h>
#include <strings.h>

int main(int argc, char *argv[]) {

char buf[1024]; // Буфер под вводимую строку
char *cp;   // Указатель на начало результата

    // Считываем строку
    cp = fgets(buf, 1024, stdin);
    if (cp == NULL) {
        printf("Ошибка при вводе строки!\n");
        return -1;
    }

    // Ищем последний пробел справа
    cp = rindex(buf, ' ');
    *cp = '\0'; // Обрезаем строку по последнему пробелу

    // Ищем первый пробел слева
    cp = index(buf, ' ');

    // Печатаем результат
    printf("%s\n", cp);
}

Три оператора всего, фактически...

И код работает:

$ gcc main.c
$ ./a.out 
qqq wwww eeeeeee r tt yyyy
 wwww eeeeeee r tt
bash-5.0$
→ Ссылка