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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Stashevckiy, 23 сен 2013.

  1. Stashevckiy

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    Ребята, подскажите, каким образом считать неопределенное количество чисел с stdin? Т.е., пользователь вводит числа через пробел, но их количество ничем не задано.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

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

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    первое - нет, не перейдет
    второе - тоже нет.
    третье - а вот это уже интересно, попробую этот способ

    Спасибо!
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Ну если не получится - читай строку, и разбирай на числа )
     
  5. Stashevckiy

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    та я вот это как раз очень боюсь, так как быстродействие очень сильно упадёт, поскольку ввод может содержать очень много чисел...
     
  6. Stashevckiy

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    Пробывал вот таким способом - не помогло...После нажатия на 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);
    }
     
  7. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Stashevckiy

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

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

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

    Ну или, читай строку, пиши ее в stringstream и читай оттуда пока он не кончится.
     
Загрузка...

Поделиться этой страницей