Задача про строки на С++
Всем привет, помогите, пожалуйста. Я хочу принять строку с клавиатуры и запихнуть её в массив типа char (тип string мне использовать нельзя). Потом я хочу полученную строку разбить на слова (слова разделены пробелами, и строка оканчивается точкой) и занести в другой двухмерный массив. Прикол в точ, что когда я просто вывожу полученную строку, всё работает отлично, и он выводит тоже самое.

Стоит мне что-то начать делать дальше, как программа просто перестаёт принимать на вход строку и выводить вообще что-либо на экран.
Помогите, пожалуйста.
Как и говорилось, лучше использовать функцию fgets: она принимает на вход три аргумента, может казаться на первый раз немного сложноватой, но это ощущение обманчиво. На самом деле ее синтаксис достаточно прост, особенно в случае ввода строки с консоли:
fgets(char* str, int n, FILE* stream);
Где:
1-й аргумент: твоя строка (точнее адрес твоей строки, куда будет записываться ввод);
2-й аргумент: количество записываемых в строку символов;
3-й аргумент: поток, из которого будет производиться запись (в данном случае пиши stdin - стандартный поток ввода в C, C++)
таким образом твой ввод будет выглядеть так:
fgets(line, 450, stdin);
+, советую ознакомиться вообще в принципе хоть немного с указателями, т.к. статическая типизация (изначальное инициализация массивов символов с заданными размерностями) в каких то случаях может быть очень неудобна.
Ты неправ, используя устаревшую и небезопасную функцию gets вместо безопасной fgets или cin, не проверяя индексы и не увеличивая k при копировании символов слов, что приводит к непредсказуемому поведению и отсутствию вывода, поэтому замени gets на fgets, следи за границами массива, инкрементируй k при записи символов, добавляй завершающий нуль в конец слова и убедись, что цикл корректно останавливается при достижении точки.