Записать строку с клавиатуры в массив - 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
, , - Объявление переменных:
- str[80] - массив символов для хранения строки, введенной пользователем
- mass - указатель на начало блока памяти, выделенного динамически
- Выделение памяти под массив символов с помощью функции malloc
- Вывод сообщения с приглашением ввести строку
- Ввод строки с клавиатуры с помощью функции gets
- Условие цикла for:
- i - индекс символа в строке
- j - индекс символа в массиве
- Проверка каждого символа строки на соответствие условию:
- Если символ является пробелом, запятой, точкой, запятой, двоеточием, то он пропускается
- Если символ не соответствует условию, то он копируется в массив
- Копирование символа в массив и увеличение индекса j
- Вывод содержимого массива с помощью функции printf
- Возврат 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д