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

вопрос к спецам: почему функция fputc при работе не устанавливает счётчик файла в конец? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сохранить в файл текст, введенный из консоли, на русском языке http://www.cyberforum.ru/cpp-beginners/thread97929.html
ввожу с клавиатуры данные в структуру, сохраняю их в файл, а потом опять вывожу на экран. в консоли все нормально, а вот если текстовый файл открыть, то там сплошные иероглифы. ума не приложу что с...
C++ Факториал Нада зделать прогу штоби она виводила таким образом X 2 4 6 8 10 а Y 2! 4! 6! 8! 10! тоисть факториал от Х зделайте плз оч надо на С/С++ http://www.cyberforum.ru/cpp-beginners/thread97868.html
C++ Строки
В заданном тексте слова разделены запятыми. Напечатать список слов, содержащих и гласные, и согласные буквы.
Перегрузить C++
Уважаемы форумчание нужна помощь, задание связанно с перегузкой операций. Задание: разработать класс оболочку int и перегрузить операции + - * / += -= *= /= == != Всё кроме + - * / я сделал , не...
C++ Конструктор со списком инициализации членов http://www.cyberforum.ru/cpp-beginners/thread97847.html
1) Какой смысл применять синтаксис конструктора со списком инициализации членов class A{ A():_name(0),_balance( 0.0 ), _acct_nmbr( 0 ){} } вместо class A{ A():{_name=0;_balance=0.0;...
C++ бинарное дерево?Файл? объясните пожалуйста что означает слово бинарное? подробнее

Показать сообщение отдельно
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
22.02.2010, 14:30  [ТС]
Ага. То есть если вызов fread неудачен, то feof вернёт 1
Что ж, это объясняет многое, но не всё.

Снова обратимся к моему коду и опять протрассируем его пошагово с учётом вновь полученых знаний.
C++
1
2
3
4
5
while(!feof(f)) {
  fread(&simvol, 1, 1, f);
  i++;
  printf("i= %d\n", i);
 }
1) feof возвращает 0 (так?)
2) зашли в тело цикла считали один символ
3) инкременировали i
4) пошли на проверку условия
5) условие выполняется потому, что предыдущее считывание было удачным

...И вот тут стоп. Я понимаю, почему выполняется условие, Вы объяснили. (Предыдущий вызов fread был удачным, вот оно и выполняется)

А темерь внимание, вопрос, которого мы не касались:


6) зашли в тело цикла удачно считали считанный уже символ.

Почему? Он ведь уже считан? По идее вызов fread должен завершиться неудачно.
Но нет, символ считывается. Почему?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru