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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
#1

Запиcь в бинарный файл - C++

28.05.2009, 16:35. Просмотров 1553. Ответов 6
Метки нет (Все метки)

Доброго всем времени.
Пытаюсь написать программу. ” Запишите в бинарный файл последовательность чисел от 0 до 100, затем выведите четные числа из файла на экран”
Это, по моим планам, должно записывать в бинарный файл последовательность чисел.
Но оно записывает только ноль. В чём тут ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include"stdio.h"
 #include"conio.h"
 void main()
 {
 FILE *file;
  int i=0;
   file = fopen("test.bin","a+");
   while(feof(file))
   {
     for ( i; i>=100; i++);
     fprintf( file, "%d\n",i );
   }
     fscanf(file,"%d\n",i);
  fclose(file);
  printf("\nChisla:%d",i);
  getch();
  }
“выведите четные числа из файла на экран”. Должно быть, что-то похожее на это.
После
C++
1
2
3
4
5
6
7
8
9
10
 fclose(file);
 
   file = fopen("test.bin","rb");
   while(feof(file))
   {
             i=i/2
     for ( i; i>=100; i++);
    fscanf( file, "%d\n",i );
    }
  fclose(file);
Или всё это не так?
Проясните пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
28.05.2009, 18:34     Запиcь в бинарный файл #2
Во-первых:
C++
1
 for ( i; i>=100; i++);// Цикл выполняется пока i меньше нуля и больше либо равно 100?
Во-вторых:
C++
1
2
 for ( i; i>=100; i++);// Вхолостую выполняется цикл и 
         fprintf( file, "%d\n",i );//записывается только последнее значение i
В-третьих:
C++
1
while(feof(file))//этот цикл тут не к чему(ты записываешь в файл, а не читаешь)
Phantom
Эксперт C++
3161 / 843 / 15
Регистрация: 29.12.2008
Сообщений: 952
28.05.2009, 22:36     Запиcь в бинарный файл #3
Еще небольшое замечание:
когда отслеживаешь, не достигнут ли конец файла, следует писать не
C++
1
while(feof(file))
а
C++
1
while( ! feof(file))
Ещё: работаем не с текстовыми файлами, а с бинарными, поэтому открываем соответственно:
не
C++
1
file = fopen("test.bin","a+");
а
C++
1
file = fopen("test.bin","ab+");
Затем нужно писать не
C++
1
fscanf(file,"%d\n",i);
а
C++
1
fscanf(file,"%d\n",&i);
И вообще можно использовать функции fread и fwrite.
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
29.05.2009, 12:09  [ТС]     Запиcь в бинарный файл #4
Спасибо за помощь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include"stdio.h"
 #include"conio.h"
 void main()
 {
 FILE *file;
  int i=0;//chislo
   file = fopen("test.bin","ab");
   {
     for ( i; i<=100; i++);
     fprintf ( file,"%d", i );
   }
     fscanf(file,"%d",&i);
  fclose(file);
  printf("\nChisla:%d",i);
  getch();
  }
А так он записывает только цифру 101.
Непонимаю почему не пишется последовательность от 0 до 100.
И как выведите четные числа из файла на экран.
Как вывести, это понятно.
Но как их определить?

MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
29.05.2009, 12:20     Запиcь в бинарный файл #5
убери строку 12,14,15
на этом запись в файл закончилась
таперь напиши чтение из файла и проверку на четность каждого числа
а еще точку с запятой после for
и еще кучу ошибок, вобщем пиши так:
C++
1
2
3
4
5
6
FILE *file;
   file = fopen("test.bin","wt");
         for (int i=0; i<=100; i++){
         fwrite(&i,sizeof(i),1,file);// или fprintf ( file,"%d", i );
         }
  fclose(file);
Lunatik
2 / 2 / 0
Регистрация: 29.05.2009
Сообщений: 20
29.05.2009, 15:05     Запиcь в бинарный файл #6
int i;
FILE *file;
file = fopen("test.bin","wb");
i=0;
for (i=0; i<101; i++)
fprintf( file, "%d\n",i );
fclose(file);
file = fopen("test.bin","rb");
while(!feof(file))
{
fscanf(file, "%d\n",&i);
int r=i%2;
if (r==0)
printf("%d\n",i);
}
fclose(file);
getch();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2009, 22:41     Запиcь в бинарный файл
Еще ссылки по теме:

Создать бинарный файл C++
Бинарный файл C++
C++ Бинарный файл
C++ Добавление в бинарный файл
Создать бинарный файл и текстовый файл C++

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

Или воспользуйтесь поиском по форуму:
All
1757 / 436 / 43
Регистрация: 09.04.2009
Сообщений: 2,589
29.05.2009, 22:41  [ТС]     Запиcь в бинарный файл #7
Спасибо всем за помощь.
Yandex
Объявления
29.05.2009, 22:41     Запиcь в бинарный файл
Ответ Создать тему
Опции темы

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