Почему функция ограничения ввода работает не так как планировалась

Написал небольшую функцию для нее передаваемые значения есть адрес строковой переменой, и целое число (числом является кол-во символов, которое помещается в строку). Хочу сделать так чтобы пользователь не мог ввести больше символов чем положено, ну и пустую строку он тоже не смог ввести. Условие на пустую строку функция проверяет, но когда я ввожу больше символов чем положено пишет ERROR.Try again, но далее выходит из функции. Вроде как я очищаю поток ввода, но это не помогает.

char* ENTER_STRING(char user_string[],int a)
{
    while (strlen(fgets(user_string, a, stdin)) == a - 1 || strcmp(user_string, "\n") == 0)
    {
            printf("ERROR.Try again\n-> ");
            fflush(stdin);
    }
    user_string[strcspn(user_string, "\n")] = 0;
    return user_string;
}

Ответы (0 шт):