Как проверить строку на пустоту?
Всем доброго времени суток! Мне нужно вводить имя книги и проверять в блоке try, если введена пустая строка или клавиша ENTER, то выводилось сообщение о неверном вводе. У меня получается так что блок catch почему то пропускается и не ловит ошибку. Заранее спасибо за ответы!
char* namebook = (char*)malloc(20);//буфер записи названи
puts("Введите название книги");
try //проверка исключения
{
scanf("%s", namebook);
int a = strlen(namebook);
if (a == 0)
throw(char*)"Вы ввели пустую строку";
}
catch (const char* exception)
{
puts(exception);
throw(char*)"Вы ввели пустую строку";
}
Ответы (1 шт):
Автор решения: LShadow77
→ Ссылка
Как вам такой вариант?
#define BUFFER_SIZE 20
char* namebook = (char*)malloc(BUFFER_SIZE);//буфер записи названи
puts("Введите название книги");
try //проверка исключения
{
fgets(namebook, BUFFER_SIZE, stdin);
if (namebook[0]=='\0' || namebook[0]=='\n')
throw "Вы ввели пустую строку";
}
catch (const char* exception)
{
puts(exception);
throw "Вы ввели пустую строку";
}
fgets() умеет работать с пустыми строками, к тому же защищает от переполнения буфера.