Несколько замечаний:
Безопаснее прочитать полную строку текста, а затем проанализировать целое число, а не делать scanf()
для одного целого числа. Это связано с тем, что последний оставляет новую строку в потоке, что может сбить с толку последующие операции чтения.
Нет смысла использовать malloc()
для динамического выделения памяти c, для этого вы можете использовать VLA:
char strings[N][1024];
Обратите внимание, что использование символа только для заглавных букв для переменной времени выполнения стилистически странно в C.
Тогда намного лучше использовать fgets()
, это безопаснее и просто лучше:
for (int i = 0; i < N; ++i)
{
if (fgets(strings[i], sizeof strings[i], stdin) == NULL)
{
fprintf(stderr, "**Read error on string %d\n", i);
exit(1);
}
}
И, как всегда, будьте готовы к тому, что ввод-вывод может завершиться неудачей, и попытайтесь справиться с этим.