Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.84
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
#1

Как ввести EOF с клавиатуры? - C++

07.08.2011, 13:54. Просмотров 6866. Ответов 15
Метки нет (Все метки)

как ввести EOF c клавиатуры ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2011, 13:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как ввести EOF с клавиатуры? (C++):

Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры. - C++
Привет всем. Как ввести двумерный массив с клавиатуры? Его размерность нужно задавать с клавиатуры.

Как ввести с клавиатуры строку - C++
Добрый день. У меня есть строка в которой 6000 тысяч символов, конец строки '\r\n'. Как записать все 6 тысяч символов в string...

Как ввести массив строк с клавиатуры? - C++
как сделать чтоб вводить массив строк с клавиатуры? // Lab13M.cpp: определяет точку входа для консольного приложения. // ...

Как ввести текстовую переменную в С++ с клавиатуры - C++
Я ввожу так char *str1 = "la"; Все отлично вводиться ! Но мне нужно ввести с клавиатуры, помогите.

Как ввести с клавиатуры слова в char? - C++
подскажите пожалуйста как ввести с клавиатуры "fat a cat sit in the table" или другие слова?и как сделать так что бы в char s2 и как...

Ввести с клавиатуры массив, распределить память для его размещения и ввести int значения этого массива - C++
Подскажите пожалуйста. Задача такая : ввести с клавиатуры n элементов массива, распределить память для его размещения и ввести int значения...

15
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
07.08.2011, 13:57 #2
<Ctrl>+<Z> для Windows
<Ctrl>+<D> для Unix
0
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
07.08.2011, 14:17  [ТС] #3
C++
1
2
3
4
5
6
while(!EOF)
    {
        cin>>line[i];
        i++;
        size++;
    }
Почему в эта прога не ждет пока я line[i] с клавиатуры ввиду, а сразу закрывается ?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2011, 14:21 #4
C++
1
2
3
4
while(std::cin >> line[i++])
{
    size++;
}
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
07.08.2011, 14:25 #5
Цитата Сообщение от Noname2512 Посмотреть сообщение
Почему в эта прога не ждет пока я line[i] с клавиатуры ввиду, а сразу закрывается ?
А ты посмотри, как у тебя в компиляторе EOF задефайнен (всмысле, что он значит), сразу поймешь
C++
1
while(!EOF)
0
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
07.08.2011, 14:33  [ТС] #6
а он так поймет когда выходить надо ?
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
07.08.2011, 14:37 #7
C++
1
2
3
4
5
6
do
        {
                cin>>line[i];
                i++;
                size++;
        }while(line[i-1]!=EOF)
по идеи так правильнее
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.08.2011, 14:38 #8
Цитата Сообщение от Noname2512 Посмотреть сообщение
а он так поймет когда выходить надо ?
если нажмешь
Цитата Сообщение от kazak Посмотреть сообщение
<Ctrl>+<Z> для Windows
<Ctrl>+<D> для Unix
то поймет
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.08.2011, 05:27 #9
Цитата Сообщение от silentnuke
по идеи так правильнее
если работаешь с EOF, то там должна быть функция, которая возвращает EOF
сам EOF ты прочитать из файла не можешь, потому что это константа, которая возвращается функцией
EOF может возвращаться и в случае ошибки

вот пример
C
1
2
3
4
5
6
    int c;
    FILE *ifp;
 
...
 
    c = getc(ifp);
если в с запишется EOF, то это ещё не значит, что файл закончился
дальше нужно применить ferror() для потока ifp, чтобы узнать, что произошло

а касаемо топика
C++
1
cin>>line[i];
это выражение вообще EOF не возвращает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream in;
    char c = 'n';
    
    cout << c << ' ' << (in >> c) << endl;
    cout << c << ' ' << (in >> c) << endl;
    cout << c << ' ' << (in >> c) << endl;
    
    in.open("file.txt");
    cout << c << ' ' << (in >> c) << endl;
    cout << c << ' ' << (in >> c) << endl;
    cout << c << ' ' << (in >> c) << endl;
    
    return 0;
}
Код
[guest@localhost tests]$ ./t
n 0
n 0
n 0
a 0xbfea69c4
d 0xbfea69c4
f 0xbfea69c4
[guest@localhost tests]$
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
08.08.2011, 08:52 #10
Цитата Сообщение от accept Посмотреть сообщение
а касаемо топика
C++
1
 cin>>line[i];
это выражение вообще EOF не возвращает
Но оно принимает значение false в случае считывания EOF, в случае считывания символа(не цифры) в int (или любой другой тип, подразумевающий хранение чисел), и при прочих ошибочных ситуациях.
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.08.2011, 09:15 #11
Цитата Сообщение от Kastaneda Посмотреть сообщение
Но оно принимает значение false в случае считывания EOF, в случае считывания символа(не цифры) в int (или любой другой тип, подразумевающий хранение чисел), и при прочих ошибочных ситуациях.
Не...
Для стримов перегружен оператор void*, который возвращает нуль, если стоят флаги failbit или badbit. Иначе ненулевое значение.
http://www.cplusplus.com/reference/iostream/ios/operator_voidpt/
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.08.2011, 09:18 #12
Цитата Сообщение от Kastaneda
Но оно принимает значение false в случае считывания EOF
никакого считывания EOF нет
в потоке заканчиваются символы и системный вызов сообщает об этом
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
08.08.2011, 09:21 #13
Цитата Сообщение от diagon Посмотреть сообщение
Для стримов перегружен оператор void*, который возвращает нуль, если стоят флаги failbit или badbit.
Я написал тоже самое, не вдаваясь в подробности)

Цитата Сообщение от accept Посмотреть сообщение
никакого считывания EOF нет
в потоке заканчиваются символы и системный вызов сообщает об этом
Помнится была тема, что-то типа "существует ли EOF", вобщем фразу "считывает EOF" в данном контексте можно считать условной
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.08.2011, 11:22 #14
Будет полезно: http://www.cyberforum.ru/cpp-beginners/thread338868.html
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
08.08.2011, 20:26 #15
Цитата Сообщение от Noname2512 Посмотреть сообщение
C
1
2
3
4
5
6
while(!EOF)
 {
 cin>>line[i];
 i++;
 size++;
 }
C++
1
while(!cin.eof())
0
08.08.2011, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 20:26
Привет! Вот еще темы с ответами:

Как ввести с клавиатуры элементы динамического массива? - C++
int *mass=new int; for(int i=0;i&lt;10;i++) { } Как ввести в цикле элементы массива , а потом вывести их на экран? Подскажите...

Как ввести в предикат условие с клавиатуры? Подробнее внутри - C++
Судари,есть вот такой кусок кода bool killer(Task a) { return a.pageNum&gt;0;//Вот тут } int main() { ...

Что такое вектор? И как его ввести с клавиатуры? - C++
Вести с клавиатуры целые числа M,N и вектор A=(a1,a2...an), n=15

Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов. - C++
Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов. Начиная от этого...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru