Здравствуйте! Пожалуйста, подскажите как вводится пустая строка в си.

19.09.20
1 ответ

Ответы

Здравствуйте.
Для информации — функция scanf в принципе не позволяет «ввести пустую строку». Функции форматированного ввода группы scanf в стандартной библиотеке языка С либо читают непустую последовательность данных, либо завершаются с ошибкой, не читая вообще ничего.

Если нужно дать возможность «вводить пустую строку» используйте функцию fgets и проверяйте результат на равенство строке "\n":

do
{
  char name[255];
  if (fgets(name, sizeof name, stdin) == NULL)
    break;
  if (strcmp(name, "\n") == 0)  // пустая строка
    break;
  ...
} while (1);

Имейте только к ввиду, что в случае смешивания форматированного (группа scanf) и неформатированного Вы можете получить некоторые особенности. Например, scanf будут оставлять во входном буфере символы перевода строки, которые вышеприведенный fgets будет обрабатывать как «ввод пустой строки». Т.е. между scanf и fgets буфер ввода надо чистить. А еще лучше не смешивать форматированный и неформатированный ввод вообще.
20.09.20
Рекомендуем личную консультацию

Виталий

C++, C#, PHP, Java, JavaScript, web-разработка, мобильные приложения. Дорого, профессионально и качественно. На вопросы про проблемы с играми, железом и настройкой системы не отвечаю! На сайте постоянно не сижу, поэтому сразу могу не ответить.
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store