• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Чтение Чисел С Stdin

  • Автор темы Stashevckiy
  • Дата начала
S

Stashevckiy

Ребята, подскажите, каким образом считать неопределенное количество чисел с stdin? Т.е., пользователь вводит числа через пробел, но их количество ничем не задано.
 
R

rrrFer

std::cin перейдет в состояние eof когда числа кончатся?
scanf() возвращает отрицательное число иногда - это тот случай?
если scanf не справится - бери fscanf, но вместо файла передавай stdin и жди когда установится флаг feof
 
S

Stashevckiy

std::cin перейдет в состояние eof когда числа кончатся?
scanf() возвращает отрицательное число иногда - это тот случай?
если scanf не справится - бери fscanf, но вместо файла передавай stdin и жди когда установится флаг feof

первое - нет, не перейдет
второе - тоже нет.
третье - а вот это уже интересно, попробую этот способ

Спасибо!
 
R

rrrFer

Ну если не получится - читай строку, и разбирай на числа )
 
S

Stashevckiy

Ну если не получится - читай строку, и разбирай на числа )

та я вот это как раз очень боюсь, так как быстродействие очень сильно упадёт, поскольку ввод может содержать очень много чисел...
 
S

Stashevckiy

Пробывал вот таким способом - не помогло...После нажатия на Enter все равно ожидает каких-либо данных.
Данные имеют такую форму:54 65 7 8 5 3 6 7 86. Но количество чисел, как я говорил раньше, может быть другим.

C++:
  int d;
int size;
while( ( d = fscanf(stdin, "%d", &size)) != EOF )
{
printf("\n%d", size);
}
 
R

rrrFer

Stashevckiy

не совсем поянтно было чего ты хочешь. Теперь вроде бы понял.

Но ответ был выше.
Читай строку и разбирай ее на числа.

что то типа gets + sscanf

Ну или, читай строку, пиши ее в stringstream и читай оттуда пока он не кончится.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!