Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
1

Конец файла

12.07.2013, 14:15. Просмотров 1954. Ответов 7
Метки нет (Все метки)

Почему, если я считываю текстовый файл:

C++
1
2
3
4
5
FILE *fp = fopen("123.txt", "rb+");
    
    while(!feof(fp))
        putchar(getc(fp));
    fclose(fp);
то при окончании символов в файле цикл завершается, а вот при считывание данных из файла stdin:
C++
1
2
3
while(!feof(stdin))
        putchar(getc(stdin));
    fclose(fp);
несмотря на то, что в stdin нет символов, C++ ждёт пока я его наберу, а не завершает цикл?

Добавлено через 57 секунд
up...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2013, 14:15
Ответы с готовыми решениями:

Удвоить размер файла, записав в конец файла все его исходные элементы
Дан файл целых чисел. Удвоить его размер, записав в конец файла все его исходные элементы (в том же...

Добавить в конец первого файла содержимое второго файла
Text6. Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла. Помогите...

Написать программу копирования файла. В конец каждой строки файла дописать количество пробелов в строке
Чтение происходит блоками. Обработать ошибки Я пока просто смогла скопировать один файл в...

конец файла
Всем привет! Читаю из файла числа: ifstream in("in.txt"); while(!in.eof()) {int f; in>>f;...

7
БНТУ ФИТР
215 / 155 / 42
Регистрация: 26.12.2012
Сообщений: 382
12.07.2013, 14:30 2
bgm123, предположу - что после getc в stdin записывается символ '\n' - из-за этого он постоянно не пуст.
0
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
12.07.2013, 14:38  [ТС] 3
Вот ниже screen shot. Я ввел символы 0123 и нажал Enter. Он мне показал коды этих символов. После чего продолжил ожидание ввода. Значит там нет символа?
0
Миниатюры
Конец файла  
БНТУ ФИТР
215 / 155 / 42
Регистрация: 26.12.2012
Сообщений: 382
12.07.2013, 14:44 4
bgm123, как раз-таки есть. записали 1 + символ конца строки => буфер не пуст. Вывели 1 символ. Второй остался в stdin. Снова один считали один символ - один остался в нем. Получается что stdin постоянно не пуст - а то что считали с него - то и вывели Но не уверен на 100%
0
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
12.07.2013, 14:48  [ТС] 5
Так символ перехода на новую строку тоже считался. Смотрите фото. Код последнего символа - 10.
0
3238 / 2046 / 350
Регистрация: 24.11.2012
Сообщений: 4,895
12.07.2013, 14:51 6
bgm123, и как по-вашему машина должна догадаться, что вы больше не собираетесь вводить символы? (попробуйте скормить в поток Ctrl+D)
0
42 / 42 / 27
Регистрация: 29.01.2013
Сообщений: 277
12.07.2013, 15:02  [ТС] 7
ctrl + z в windows работает, это да. Но как система определяет, что пока не конец?
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
12.07.2013, 15:23 8
Никак. Система не знает и не может знать, с какой скоростью оператор жмет на клавиши. Поэтому она просто ждет Ctrl+Z.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2013, 15:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

C++ конец файла
Имеется файл с данными типа forestry и функция которая выводит на экран его содержимое void...

Конец файла
Не могу разобраться,как правильно написать условие, типа: "если не конец файла и .....,то ....."

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Конец файла EOF
Начал заново учить программирование на c++ по книге Кернигана, Ритчи. Дошел до главы с EOF и никак...


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

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

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