Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 19:08   #1
Faramir02
Новичок
Джуниор
 
Регистрация: 22.12.2010
Сообщений: 2
По умолчанию Чтение данных из бинарного файла

Есть код:
Код:
#include <stdio.h>
#include <io.h>
#include <conio.h>
#include <math.h>
 
float x[200],y[200],a[100];
void main()
{
 clrscr();
 FILE *inp;
 
 char name[50];
 int i=0,j,n=0;
 
 printf("Imya faila: ");
 gets(name);
 
 printf("Pervie 2 chisla-tochka, dalee-dlina i ugol");
 printf("\nVsego chisel= ");
 scanf("%d",&n);
 
 for(i=0;i<n;i++)
 { scanf("%f",&a[i]);}
 
 if ((inp=fopen(name,"wb+"))==0)
  printf("\nfile ne izm\n");
 else
  {for(i=0;i<n;i++)
   fwrite(&a,1,1,inp);
   fclose(inp);
 
 inp=fopen(name,"rb");
 if (inp)
 
  while (!feof(inp))
    {
     fread(&x,1,1,inp);
     fread(&y,1,1,inp);
     i++;j=i;
    }
  }
  for(i=0;i<n;i++)
  printf("%f%f",x[i],y[i]);
 
 float xn=x[0],yn=y[0];
 
 for (i=1;i<j;i++)
  {
   xn=xn+(x[i]*cos((y[i]*3.14)/180));
   yn=yn+(x[i]*sin((y[i]*3.14)/180));
  }
 
 if (labs(xn-x[0])<0.0001 && labs(yn-y[0])<0.0001)
  printf("\nEti tochki soedinyautsa v mnogougolnik, kolichestvo uglov - %d\n",j-2);
 
 else printf("\nNe mnogougolnik\n");
  printf("\n");
 
      getch();
  }
В результате выполнения программы в массивы x[i] и y[i] записываются нули, поэтому прога и не работает должным образом. Возможно кто либо знает почему так, и что надо сделать, чтобы так не было.

Последний раз редактировалось ACE Valery; 22.12.2010 в 22:42.
Faramir02 вне форума Ответить с цитированием
Старый 22.12.2010, 19:29   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
for(i=0;i<n;i++)
fwrite(&a,1,1,inp);
Этот код записывает адрес указателя на первый элемент массива a n раз. Возможно, вы имели ввиду такое (либо первый вариант, либо второй):
Код:
fwrite(&a[0], sizeof(a[0]), n, inp);
fwrite(a, sizeof(float), n, inp);
И зачем вы сначала создаете файл на чтение и запись, если вы только записываете, а затем закрываете и снова открываете?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 22.12.2010, 19:39   #3
Faramir02
Новичок
Джуниор
 
Регистрация: 22.12.2010
Сообщений: 2
По умолчанию

Ой, да с writ-ом вы правы там второй вариант, а вообще, насчет закрытия мне посоветовал одногруппник, до этого было без открывания, но код все равно не работал
Faramir02 вне форума Ответить с цитированием
Старый 22.12.2010, 22:43   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Faramir02, у нас тег оформления кода не [CPP], а [code]
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись/чтение из бинарного файла. H1ghlander Общие вопросы C/C++ 0 21.11.2010 17:44
Чтение типизированого бинарного файла (ILDA) Ryazanec Общие вопросы Delphi 6 24.10.2010 21:16
Windows-service.Некорректное чтение бинарного файла. Ifmomax Общие вопросы Delphi 0 02.07.2010 16:47
Чтение из бинарного файла. kir_rik Помощь студентам 2 04.06.2010 00:31
Запись/чтение из бинарного файла - непонятные проблемы.... Jorgen Общие вопросы C/C++ 1 26.11.2009 11:45