Записать строку с клавиатуры в массив - C (СИ)

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

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

Здравствуйте, столкнулся с небольшой проблемой. Я ввожу с клавиатуры предложение, программа удаляет знаки препинания и записывает получившуюся(слитную) строку в массив. Пример: Что ввожу: primer stroki v massive Что хочу получить: primerstrokivmassive Но у меня ошибка где-то в коде.
#include <stdio.h>
#include <string.h>
    int main()
{
    char str[80];
    char* t;
    char znak[]={' ', ',','/', '\\'};
    char *mass;
    mass = malloc(sizeof(char) * 100000000);
    int i=0;
            printf("\nVvedite stroku:\n");
            gets(str);
            t=strtok(str,znak);
    while (t != NULL) 
    {
        mass[i]=t;
        i++;
        t = strtok (NULL,znak);
    }
 
    printf("массив: %s\n", mass);
    return 0;
}

Решение задачи: «Записать строку с клавиатуры в массив»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char str[80];
    char *mass;
    mass = malloc(sizeof(char) * 1000);
            printf("\nVvedite stroku:\n");
            gets(str);
    for(int i = 0, j = 0; str[i]; ++i)
    {
        if((str[i] >= ' ' && str[i] <= '/') || (str[i] >= ':' && str[i] <= '@'))
            continue;
        mass[j] = str[i];
        j++;
    }
 
    printf("массив: %s\n", mass);
    return 0;
}

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

  1. Подключение необходимых библиотек: , ,
  2. Объявление переменных:
    • str[80] - массив символов для хранения строки, введенной пользователем
    • mass - указатель на начало блока памяти, выделенного динамически
  3. Выделение памяти под массив символов с помощью функции malloc
  4. Вывод сообщения с приглашением ввести строку
  5. Ввод строки с клавиатуры с помощью функции gets
  6. Условие цикла for:
    • i - индекс символа в строке
    • j - индекс символа в массиве
  7. Проверка каждого символа строки на соответствие условию:
    • Если символ является пробелом, запятой, точкой, запятой, двоеточием, то он пропускается
    • Если символ не соответствует условию, то он копируется в массив
  8. Копирование символа в массив и увеличение индекса j
  9. Вывод содержимого массива с помощью функции printf
  10. Возврат 0, что означает успешный конец работы программы

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


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

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

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