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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2009, 00:05   #1
Asain-Asa
 
Регистрация: 06.11.2006
Сообщений: 9
По умолчанию mingw32-g++ и msvs6 не корректная работа fstream под windows

ниже приведённая программа (малость переделанные, оставшиеся со школы исходники) прекрасно работает под linux, но при кросскомпиляции с помощью mingw32-g++ (Gentoo 4.4.2 p1.0) 4.4.2 или сборке на виртуальной машине с использованием msvs6, программа работает некорректно, а именно не происходит запись\чтение в_файл\из_файла. пожалуйста помогите найти проблему.

PHP код:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <string.h>

using namespace std;

struct Book {
   
char author[45];
   
char name[25];
   
char genre[15];
   
int year;
   
int id;
};

int enterChoice(void);
void newBook(fstream &);
void updateBook(fstream &);
void deleteBook(fstream &);
void searchBook(fstream &);
void printBook(fstream &);

int main() {
   
fstream libraryFile("lib.dat"ios::out ios::in);
   if (!
libraryFile) {
      
cerr << "Can't open file" << endl;
      exit(
1);
   }

   
int choice;
   while ((
choice =  enterChoice()) != 6) {
      switch (
choice) {
         case 
1:
            
newBook(libraryFile);
            break;
         case 
2:
            
updateBook(libraryFile);
            break;
         case 
3:
            
deleteBook(libraryFile);
            break;
         case 
4:
            
searchBook(libraryFile);
            break;
         case 
5:
            
printBook(libraryFile);
            break;
         default:
            
cerr << "Incorrect choice" << endl;
            break;
      }
   }
   return 
0;
}

int enterChoice(void) {
   
cout << " 1 - new book" << endl
        
<< " 2 - edit book" << endl
        
<< " 3 - remove book" << endl
        
<< " 4 - search in books" << endl
        
<< " 5 - print book" << endl
        
<< " 6 - exit" << endl;

   
int choice;
   
cout << "Enter your choise: ";
   
cin >> choice;
   
cout << endl;
   return 
choice;
}

void newBook(fstream insertInFile) {
   
Book book;
   
book.id 0;
   
cout << "Adding book" << endl << "Enter ID of book (1 -- 100): ";
   
int ID;
   
cin >> ID;
   
insertInFile.seekg((ID 1) * sizeof(Book));
   
insertInFile.read((char *)&booksizeof(Book));

   if (
book.id == 0) {
      
cout << "  Author: ";
      
cin >> book.author;
      
cout << "  Name: ";
      
cin >> book.name;
      
cout << "  Genre: ";
      
cin >> book.genre;
      
cout << "  Year: ";
      
cin >> book.year;
      
book.id ID;
      
insertInFile.seekp((ID 1) * sizeof(Book));
      
insertInFile.write((char *)&booksizeof(Book));
      
cout << "Book with ID " << ID << " created" << endl;
   }
   else
      
cerr << "Book with ID " << ID << " was created" << endl;
}

void deleteBook(fstream deleteFromFile) {
   
Book book;
   
cout << "Deleting book" << endl << "Enter ID of book (1 -- 100): ";
   
int ID;
   
cin >> ID;
   
deleteFromFile.seekg((ID 1) * sizeof(book));
   
deleteFromFile.read((char *)&booksizeof(book));

   if (
book.id != 0) {
      
Book blankBook = {" " " "" "00};
      
deleteFromFile.seekp((ID 1) * sizeof(book));
      
deleteFromFile.write((char *)&blankBooksizeof(book));
      
cout << "Book with ID " << ID << " deleted" << endl;
   }
   else {
      
cerr << "Book with ID " << ID << " is impety" << endl;
   }
}

void updateBook(fstream updateFile) {
   
cout << "Updating book" << endl << "Enter ID of book (1 -- 100): ";
   
int ID;
   
cin >> ID;
   
Book book;
   
book.id 0;
   
updateFile.seekg((ID 1) * sizeof(book));
   
updateFile.read((char *)&booksizeof(book));
   if (
book.id != 0) {
      
cout << "  Author: ";
      
cin >> book.author;
      
cout << "  Name: ";
      
cin >> book.name;
      
cout << "  Genre: ";
      
cin >> book.genre;
      
cout << "  Year: ";
      
cin >> book.year;
      
updateFile.seekp((ID 1) * sizeof(book));
      
updateFile.write((char *)&booksizeof(book));
   }
   else
      
cerr << "Book with ID " << ID << " not created" << endl;
}

void searchBook(fstream searchFile) {
   
Book book;
   
cout << "Searching book" << endl << "Enter a string for find: ";
   
char buff[45];
   
cin >> buff;
   
cout << endl;
   for (
int i 0100i++) {
      
searchFile.seekg(sizeof(book));
      
searchFile.read((char *)&booksizeof(book));
      if ((
strstr((char *)&bookbuff)) != 0) {
         
cout << " Author: " << book.author << endl
              
<< " Name: " << book.name << endl
              
<< " Genre: " << book.genre << endl
              
<< " Year: " << book.year << endl
              
<< " ID: " << book.id << endl << endl;
      }
   }

Орфаграфические ошибки пренадлижат WWWКорпарейшен.exe Copyright © 00 - 2050.
Asain-Asa вне форума Ответить с цитированием
Старый 18.11.2009, 00:06   #2
Asain-Asa
 
Регистрация: 06.11.2006
Сообщений: 9
По умолчанию

и ещё одна функция, которая не влезла в первый пост.

PHP код:
void printBook(fstream printFile) {
   
Book book;
   
cout << "Print book" << endl << "Enter ID of book: ";
   
int ID;
   
cin >> ID;
   
printFile.seekg(ID sizeof(book));
   
printFile.read((char *)&booksizeof(book));
   if (
book.id != 0) {
      
cout << " Author: " << book.author << endl
           
<< " Name: " << book.name << endl
           
<< " Genre: " << book.genre << endl
           
<< " Year: " << book.year << endl
           
<< " ID: " << book.id << endl << endl;
   }
   else
      
cout << "Book with ID " << ID << " not created" << endl << endl;

Орфаграфические ошибки пренадлижат WWWКорпарейшен.exe Copyright © 00 - 2050.
Asain-Asa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование под Windows на C# I.C.E Помощь студентам 3 29.04.2010 16:39
Программирование под Windows Mobile Neizer Общие вопросы C/C++ 5 17.01.2010 13:54
Разница исполнения под Windows XP и Windows Server 2003? -Nast- Общие вопросы Delphi 0 02.06.2009 09:20
Корректная закачка файлов. Dj_smart Работа с сетью в Delphi 3 26.03.2009 16:57
Существует ли DVIPNG под Windows? Bounefarte Софт 0 25.08.2007 16:51