Форум программистов, компьютерный форум CyberForum.ru

Бесконечный цикл и EOF в VS 2013 - C++

Восстановить пароль Регистрация
 
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
05.08.2014, 09:34     Бесконечный цикл и EOF в VS 2013 #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string>
#include <cstdlib>
#include <vector>
 
using namespace std;
int main(void)
{
    int n;
    while (cin >> n) // при while (scanf("%d", &n) != EOF) таже песня
    {
        cout << "lolwhut?" << endl;
    }
    cout << "bggggg";
    return 0;
}

При запуске на VS 2013 бесконечный цикл. При запуске на онлайн компиляторе сразу выводит "bggggg". Как я понимаю, что-то со студией. Можно с этим как-то исправиться без замены компилятора?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2014, 09:34     Бесконечный цикл и EOF в VS 2013
Посмотрите здесь:

бесконечный цикл C++
C++ Бесконечный цикл
Бесконечный цикл C++
Бесконечный цикл C++
C++ Бесконечный цикл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,923
05.08.2014, 09:38     Бесконечный цикл и EOF в VS 2013 #2
Renevity, попробуйте так.
C++
1
while ((с = getchar()) != EOF)
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
05.08.2014, 09:55  [ТС]     Бесконечный цикл и EOF в VS 2013 #3
Аналогичная ситуация, только "lolwhut?" выводит аж 2 раза.
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,923
05.08.2014, 09:58     Бесконечный цикл и EOF в VS 2013 #4
Renevity, а что вы вводите?
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
05.08.2014, 11:44  [ТС]     Бесконечный цикл и EOF в VS 2013 #5
Цитата Сообщение от S_el Посмотреть сообщение
Renevity, а что вы вводите?
Целые числа/число, ну и символы тоже пробовал
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
05.08.2014, 11:57     Бесконечный цикл и EOF в VS 2013 #6
Renevity, что типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
 
using namespace std;
 
bool isZero(string number) {
    for (int i = 0; i < number.length(); i++) {
        if (number[i] != '0') return false;
    }
    return true;
}
 
int main() {
    int n;
    string buffer;
    while (true) {
        getline(cin, buffer);
        n = atoi(buffer.c_str());
        if (n == 0 && !isZero(buffer)) break;
 
        //Other code
        cout << "Entered number: " << n << endl;
    }
    cout << "End.";
    return 0;
}
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,923
05.08.2014, 12:00     Бесконечный цикл и EOF в VS 2013 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Renevity, пробуйте так,напишите,что выведет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(void)
{
    char n;
    while (cin.get(n)) 
    {
        cout<<n<< endl;
    }
    cout << "bggggg";
    return 0;
}
Цикл должен отрабатывать,пока вы не введете Ctrl+^Z.

Добавлено через 1 минуту
QGuest, а зачем здесь функция isZero?
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
05.08.2014, 12:04     Бесконечный цикл и EOF в VS 2013 #8
Цитата Сообщение от S_el Посмотреть сообщение
QGuest, а зачем здесь функция isZero?
функция atoi возвращает ноль если строка buffer будет вмещать в себе число 0, а также, если buffer вообще не будет числом.
То-есть, без этой проверки такой ввод будет неправильным и цикл завершится: 000000.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
05.08.2014, 12:19     Бесконечный цикл и EOF в VS 2013 #9
Цитата Сообщение от Renevity Посмотреть сообщение
while (cin >> n)
а можно спросить в чем тут вообще смысл условия?
по-моему с таким условием цикл и должен быть бесконечным
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
05.08.2014, 12:23  [ТС]     Бесконечный цикл и EOF в VS 2013 #10
О чорд. Во время ввода в цикле выводит число, а если ввести Ctrl + C, то слово.

Получается я неправильно понял, как работает EOF. Там где я читал об этом не было сказано о завершении цикла комбинацией клавиш. Но всё-равно спасибо, теперь я понимаю, как это работает.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.08.2014, 12:39     Бесконечный цикл и EOF в VS 2013 #11
Цитата Сообщение от frostyfull Посмотреть сообщение
а можно спросить в чем тут вообще смысл условия?
Оператор возвращает ссылку на поток,

http://www.cplusplus.com/reference/i...perator%3E%3E/

у потока есть оператор bool

http://www.cplusplus.com/reference/i...operator_bool/

В итоге цикл будет выполняться, пока не будет введено что-то отличное от числа.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
05.08.2014, 13:43     Бесконечный цикл и EOF в VS 2013 #12
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
В итоге цикл будет выполняться, пока не будет введено что-то отличное от числа.
это я уже понял, скомпилировав у себя и потестив программу)

но все же мне не понятно построение условия cin >> n и все, ни разу так не делал)
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.08.2014, 14:18     Бесконечный цикл и EOF в VS 2013 #13
Цитата Сообщение от frostyfull Посмотреть сообщение
cin >> n
Если рассматривать оператор как функцию, у которой есть возвращаемое значение, становится понятнее.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
05.08.2014, 14:25     Бесконечный цикл и EOF в VS 2013 #14
uglyPinokkio, дак ведь если считывать допустим символ в переменную типа инт, туда запишется код, и все равно будет число, или я ошибаюсь?
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
05.08.2014, 14:29     Бесконечный цикл и EOF в VS 2013 #15
Цитата Сообщение от frostyfull Посмотреть сообщение
дак ведь если считывать допустим символ в переменную типа инт, туда запишется код, и все равно будет число, или я ошибаюсь?
Будет ошибка преобразования в число, оператор bool вернет false.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2014, 16:23     Бесконечный цикл и EOF в VS 2013
Еще ссылки по теме:

C++ Почему цикл на при 1 уходит в бесконечный цикл?
C++ Бесконечный цикл for
Бесконечный цикл C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
05.08.2014, 16:23     Бесконечный цикл и EOF в VS 2013 #16
uglyPinokkio, а ну да, я уже плохо помню, но последний раз, когда писал программу с вводом чисел, делал проверку на ввод символа, на я делал проверку просто по таблице аски со считыванием в обычную строку, прямо в инт не считываю никогда
Yandex
Объявления
05.08.2014, 16:23     Бесконечный цикл и EOF в VS 2013
Ответ Создать тему
Опции темы

Текущее время: 19:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru