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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 00:12   #1
kir_rik
Пользователь
 
Аватар для kir_rik
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию Чтение из бинарного файла.

Здравствуйте. Помогите разобраться, пожалуйста, где косячит работа с бинарником?

Код:
#include <iostream>

using namespace std;

struct Record{
       int number;//to search
       int date;//to search
       int time;
       char dst[20];//to search
       char name[20];
       int num_bag;
       int mas_bag;//to search

};

Record New_Record(){
       Record rc;

       cout << "\nNumber>>";cin>>rc.number;
       cout << "\nDate>>";cin>>rc.date;
       cout << "\nTime>>";cin>>rc.time;
       cout << "\nDestination>>";cin>>rc.dst;
       cout << "\nName>";cin>>rc.name;
       cout << "\nNumber of baggage>>";cin>>rc.num_bag;
       cout << "\nMas of baggage>>";cin>>rc.mas_bag;
       return rc;
}

void show(Record rc){
       cout << "\nNumber>>"<<rc.number;
       cout << "\nDate>>"<<rc.date;
       cout << "\nTime>>"<<rc.time;
       cout << "\nDestination>>"<<rc.dst;
       cout << "\nName>"<<rc.name;
       cout << "\nNumber of baggage>>"<<rc.num_bag;
       cout << "\nNMss of baggage>>"<<rc.mas_bag;
       cout << "\n";

}

int main(){
    int c;
    int i,n;
    int size;
    FILE* f=fopen("db.dat", "wb");
    struct Record date;
    struct Record massive[50];
    while(1){      
      printf("\nMenu:\n");
      printf("1.Add to file from keyboard\n");
      printf("2.Show the date from file\n");
      printf("3.Clear the file\n");
      printf("4.Delete\n");
      printf("5.Replace\n");
      printf("6.Binary to txt\n");
      printf("0.Exit\n");
      scanf("%d", &c);
      switch(c){
         case 1:{
             printf("Input the date:\n");
             date=New_Record();
             fseek (f , 0 , SEEK_END);
             fwrite(&date, sizeof(Record), 1, f);
             break;
             }
         case 2:{
              fseek (f , 0 , SEEK_END);
              size = ftell (f);
              n=(int)size/sizeof(Record);
              cout<<n;
              fwrite(&massive, sizeof(Record), n, f);
              for(i=0;i<n;i++)show(date);
              break;
              }
         case 3:{
              
              break;
              }
         case 4:{
              
              break;
              }
         case 5:{
              
              break;
              }
         case 6:{
              
              break;
              }   
         case 0:{
              fclose(f);
              return 0;
              }
         default:{
             printf("Wrong input!\n");
             break;
             }
      }
      
      
    }
    system("pause");
    return 0;
}
Несколько раз переписывал case 2 - выводит n раз последнюю запись
kir_rik вне форума Ответить с цитированием
Старый 04.06.2010, 00:25   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну n раз выводит очевидно из-за этого цикла
Код:
for(i=0;i<n;i++)show(date);
Другое дело, что у Вас тут вообще какие-то неувязочки. Зачем, например, на действие Show the date from file выполнять запись в файл?
Код:
fwrite(&massive, sizeof(Record), n, f);
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 04.06.2010, 00:31   #3
kir_rik
Пользователь
 
Аватар для kir_rik
 
Регистрация: 29.03.2010
Сообщений: 21
По умолчанию

Ооох, пара идти спать похоже.
upd поправил на fread(&massive, sizeof(Record), n, f), но проблема по неизвестной причине все та же
kir_rik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема при выводе с бинарного файла... xVxSeRGxVx Общие вопросы C/C++ 1 13.01.2010 19:08
Запись/чтение из бинарного файла - непонятные проблемы.... Jorgen Общие вопросы C/C++ 1 26.11.2009 11:45
вытащить текст UTF16 из бинарного файла МОЛНИЯ Помощь студентам 1 04.01.2009 15:12