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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сохранить в файл текст, введенный из консоли, на русском языке http://www.cyberforum.ru/cpp-beginners/thread97929.html
ввожу с клавиатуры данные в структуру, сохраняю их в файл, а потом опять вывожу на экран. в консоли все нормально, а вот если текстовый файл открыть, то там сплошные иероглифы. ума не приложу что с этим можно сделать. пыталась использовать OemToCharA, но результат тот же. может кто знает как с этим бороться
C++ Факториал Нада зделать прогу штоби она виводила таким образом X 2 4 6 8 10 а Y 2! 4! 6! 8! 10! тоисть факториал от Х зделайте плз оч надо на С/С++ http://www.cyberforum.ru/cpp-beginners/thread97868.html
C++ Строки
В заданном тексте слова разделены запятыми. Напечатать список слов, содержащих и гласные, и согласные буквы.
Перегрузить C++
Уважаемы форумчание нужна помощь, задание связанно с перегузкой операций. Задание: разработать класс оболочку int и перегрузить операции + - * / += -= *= /= == != Всё кроме + - * / я сделал , не знаю как перегрузить, операции, но думаю без this не обойтись. Вот исходник. #include <iostream.h> class MyInt {
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; _acct_nmbr=0;} } ?
C++ бинарное дерево?Файл? объясните пожалуйста что означает слово бинарное? подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
22.02.2010, 11:33     вопрос к спецам: почему функция fputc при работе не устанавливает счётчик файла в конец?
Друзья!
То есть написана программка. С клавы вводится ОДИН символ и он запихивается в файл.
А потом этот файл с помощью функции fread считывается обратно в переменную.
Это реализовано в цикле, условие выхода из которого- счётчик считанных байтов достиг конца файла

Но после первого считывания счётчик байтов не достигает конца файла!
Почему? Загадка. Файл имеет размер равный 1, содержит на самом деле один символ (смотрено в hex редакторе), по идее ьон должен считаться и всё, конец цикла

Но то ли функция fread не передвигает счётчик, то ли feof возвращает непрпавильное значение, но мы имеем второе считывание. В чём тут дело?

Эту идею можно и по другому реализовать, но хотелось бы разобраться именно в этом вопросе. Спасибо.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
int main() {
 
 char simvol;
 int i;
 FILE* f;
 
 //Вводим символ 
 printf ("vvedi odin simvol ");
 scanf ("%c", &simvol);
 
 //Теперь запихаем этот символ в файл
 if (!(f= fopen ("fail","wb"))) {
  printf ("fail ne otkrit\n");
  getchar ();
 } 
 printf ("zapisanni simvol est %c\n", fputc (simvol, f));
 getchar ();
 fclose (f);
 
 
 
 //а теперь попробуем считать. Символ будет считываться 2 раза!
 if (!(f= fopen ("fail","rb"))) {
  printf ("fail ne otkrit\n");
  getchar ();
 } 
 
 //непосредственно считывание
 i= 0;
 while(!feof(f)) {
  fread(&simvol, 1, 1, f);
  i++;
  printf("i= %d\n", i);
 }
 printf("kak vidim, i== 2");
 fclose(f);
 getchar ();
 return 0;
}
Добавлено через 3 минуты
Прошу прощения, в заголовке надо исправить fputc на fread
Товарищи модераторы, исправьте, пожалуйста. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru