Как проверить строку на пустоту?

Всем доброго времени суток! Мне нужно вводить имя книги и проверять в блоке 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() умеет работать с пустыми строками, к тому же защищает от переполнения буфера.

→ Ссылка