Технологии
Здравствуйте! Пожалуйста, подскажите как вводится пустая строка в си. - вопрос №3960357
сентябрь 19, 2020 г.
-
Всего ответов: 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 буфер ввода надо чистить. А еще лучше не смешивать форматированный и неформатированный ввод вообще.
Похожие вопросы
Решено
Дан текстовый файл F. Переписать в другой файл G все строки, содержащие цифры.
февраль 16, 2012 г.
Создать класс арифметическая прогрессия с методом сумма прогрессии. Класс имеет два поля типа double. Первое - первый член прогрессии,
июнь 4, 2014 г.
Дано трехзначное число. Найдите сумму его цифр. Надо написать программу в Паскале
декабрь 4, 2014 г.