Проверьте, является ли ввод пользователя пустым в C с помощью scanf - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно что-то сделать, когда пользователь нажимает только ввод без какого-либо ввода, но это пусто. Когда пользователь вводит что-то, \0 всегда прямо за последним символом. Например

вход: привет мир

\0 всегда в prom[11], но когда пользователь нажимает только, введите \0.

char prom[100];
scanf("%[^\n]", prom); 
if (prom[0] == '\0'){ //if user press enter 
//do something
}

Ответы [ 3 ]

1 голос
/ 20 марта 2019

НИКОГДА НИКОГДА НЕ СКАЧАТЬ АРБИТРАЖНЫЕ СТРОКИ . Это источник дыр в безопасности и общий источник ошибок, о которых вам будет позже трудно найти. Вы можете использовать scanf для поиска строк, если вы неявно указываете максимальную длину строки для чтения (читайте о спецификаторах формата scanf). Но в вашей ситуации быстрее и безопаснее использовать fgets. Прочитайте строку. Проверьте, действительно ли вы прочитали его (по возвращаемому значению fgets), а затем проверьте, является ли первый символ (если он действительно существует) '\ n'. Если это так, то пользователь запросил пустую строку.

Кроме того, получив строку, вы можете безопасно проанализировать ее с помощью sscanf для сообщения, которое вам нужно проанализировать.

0 голосов
/ 20 марта 2019

scanf () возвращает количество преобразованных символов. Проверьте возвращаемое значение на 0, чтобы убедиться, что преобразование не было выполнено.

0 голосов
/ 20 марта 2019

fgets () - решение для условия, если prom [0] == '\ n'

...