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

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

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

Здравствуйте, столкнулся с небольшой проблемой. Я ввожу с клавиатуры предложение, программа удаляет знаки препинания и записывает получившуюся(слитную) строку в массив. Пример: Что ввожу: primer stroki v massive Что хочу получить: primerstrokivmassive Но у меня ошибка где-то в коде.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[80];
  6. char* t;
  7. char znak[]={' ', ',','/', '\\'};
  8. char *mass;
  9. mass = malloc(sizeof(char) * 100000000);
  10. int i=0;
  11. printf("\nVvedite stroku:\n");
  12. gets(str);
  13. t=strtok(str,znak);
  14. while (t != NULL)
  15. {
  16. mass[i]=t;
  17. i++;
  18. t = strtok (NULL,znak);
  19. }
  20. printf("массив: %s\n", mass);
  21. return 0;
  22. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.     char str[80];
  8.     char *mass;
  9.     mass = malloc(sizeof(char) * 1000);
  10.             printf("\nVvedite stroku:\n");
  11.             gets(str);
  12.     for(int i = 0, j = 0; str[i]; ++i)
  13.     {
  14.         if((str[i] >= ' ' && str[i] <= '/') || (str[i] >= ':' && str[i] <= '@'))
  15.             continue;
  16.         mass[j] = str[i];
  17.         j++;
  18.     }
  19.  
  20.     printf("массив: %s\n", mass);
  21.     return 0;
  22. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы