Из заданной строки удалить первое слово, если строка содержит заданное количество слов - C (СИ)

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

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

Из заданной строки удалить первое слово, если строка содержит заданное количество слов. Для хранения исходной строки и обработанной строки использовать динамическую память. Все, что удалось из себя выдавить. Понятия не имею, как воспользоваться динамической памятью
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
int main()
{
    char str[33],
        str1[33];
    int i = 0,
        schetchik_slov = 0,
        schetchik_simvolov = 0,
        n = 0,
        a = 0,
        sl = 0,
        simv = 0,
        dlina_1_sl = 0,
        probeli = 0;
    gets(str);
    puts(str);
    printf("N: ");
    scanf("%d", &n);
    while ((str[i] == ' ') && (str[i] != '\0')) //пропуск пробелов в начале текста
        i++;
    probeli = i;
    while (str[i] != '\0')                  //счетчик слов
    {
        if (str[i] != ' ' && sl == 0)
        {
            sl = 1;
            schetchik_slov++;
        }
        else
        if (str[i] == ' ')
            sl = 0;
        i++;
    }
    schetchik_simvolov = i;
 
    i = probeli;
    sl = 0;
    while ((str[i] != ' ') && (sl = 1))     //счетчик длины первого слова
    {
        if (str[i] != ' ')
        {
            dlina_1_sl++;
        }
        else
        if (str[i] == ' ')
            sl = 1;
        i++;
    }
 
    i = 0;
    if (schetchik_slov == n)
    {
        while (str[i] != '\0')
        {
            str1[i] = str[i+ probeli + dlina_1_sl];
            i++;
        }
        puts(str1);
    }
    printf("%d, %d\n", schetchik_simvolov, dlina_1_sl);
    system("pause");
    return(0);
}

Решение задачи: «Из заданной строки удалить первое слово, если строка содержит заданное количество слов»

textual
Листинг программы
char *pmem;
    gets(buf);
    pmem=(char*)malloc(strlen(buf)+1);
    if(pmem==NULL)
    {
        puts("Отсутствует свободная память");
    }
   else
    strcpy(pmem,buf);

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

  1. Объявлена переменная pmem типа char* (строка символов).
  2. С помощью функции gets() вводится строка в переменную buf.
  3. Выделена память под строку с помощью функции malloc(), в которую будет копироваться строка без первого слова.
  4. Если память не выделена (т.е. pmem равно NULL), выводится сообщение об отсутствии свободной памяти.
  5. Если память выделена, то в нее копируется строка без первого слова с помощью функции strcpy().

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


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

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

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