Относительно первой проблемы:
Если вы отладите программу, вы можете легко увидеть, что причиной является бесконечный цикл, поскольку вы перезаписываете i
, не используя scanf
должным образомисправление для второй проблемы должно исправить это.
Относительно второй проблемы:
Вы используете функцию scanf
, которая небезопасна из-зак тому факту, что он читает весь ввод от пользователя независимо от размера выделенного буфера (в вашем случае char ch[2]
.
, поэтому, хотя он и вводит всю строку sxdfvghujiuytredwsazxacdfv
в ch
, этоочевидно переполнен -> таким образом ошибка сегментации неизбежна. Вместо этого используйте scanf_s
и ограничьте количество символов для чтения.
Примечание:
Если вы будете поднимать флаги предупреждениядолжно показаться, что scanf
проблематично и небезопасно