LINUX.ORG.RU

История изменений

Исправление MKuznetsov, (текущая версия) :

функция prompt() перегружена вредным ей функционалом. По идее - её задача выдать приглашение к вводу, считать текст и его вернуть. Я бы ей даже добавил переменные параметры, чтобы формировать приглашение через vprintf и ему подобные, просто для удобства.

и опечалю - getline не везде есть :) раз уж всё равно тренируетесь, то делайте из prompt() его альтернативу, которая не только даёт приглашение к вводу, а заодно например жрёт(игнорит) лишние пробелы

проверка корректности полученной строки - другая тема, сейчас вам нужны буквы, в другой раз цифры, в третий раз корректная дата - надо выносить из prompt() в отдельную функцию

по поводу многобайтных кодировок - у вас всё равно кругом обычный printf, так что подразумевается либо ASCII либо UTF. Забей. Потом под настроение сделаешь отдельную wprompt по аналогии wprintf

что ещё по вашему коду..переменная «ssize_t read = 0;» это жезть...делать какие-либо free() перед exit вообщем-то ненужно

Исходная версия MKuznetsov, :

функция prompt() перегружена вредным ей функционалом. По идее - её задача выдать приглашение к вводу, считать текст и его вернуть. Я бы ей даже добавил переменные параметры, чтобы формировать приглашение через vprintf и ему подобные, просто для удобства.

и опечалю - getline не везде есть :) раз уж всё равно тренируетесь, то делайте из prompt() его альтернативу, которая не только даёт приглашение к вводу, а заодно например жрёт(игнорит) лишние пробелы

проверка корректности полученной строки - другая тема, сейчас вам нужны буквы, в другой раз цифры, в третий раз корректная дата.

по поводу многобайтных кодировок - у вас всё равно кругом обычный printf, так что подразумевается либо ASCII либо UTF. Забей. Потом под настроение сделаешь отдельную wprompt по аналогии wprintf

что ещё по вашему коду..переменная «ssize_t read = 0;» это жезть...делать какие-либо free() перед exit вообщем-то ненужно