Технологии

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

сентябрь 19, 2020 г.

  • Всего ответов: 1

  • Виталий - аватарка

    Виталий

    2-й в Технологиях

    Здравствуйте.
    Для информации — функция 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, 2020 г.
    Ответ понравился автору

Похожие вопросы

Язык С Дано целое число,...

октябрь 14, 2013 г.

Технологии