|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.12.2010, 14:11 | #1 |
Пользователь
Регистрация: 09.10.2010
Сообщений: 14
|
С++ Проблема с записью в файл структуры
помогите пожалуйста!!!
столкнулся с проблемой - при записи в файл структуры возникают проблемы, если поля структуры типа int сщдержат некоторые числа. Я случайно нашел 2 таких числа - 794 и 1050. При записи fwrite возвращает 1, т.е. запись прошла без ошибок, а при чтении когда доходит до полей структуры с таким числом показывает конец файла. С другими числами работает нормально. В чем может быть проблема? #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> #include <windows.h> #include <string.h> #include <ctype.h> // Rus char buf [256]; char *RusUni ( char *s ) { CharToOem( s, buf ); return buf; } // Структура, описывающая самолет struct sAirplane { char Modification [50]; // Модификация char Developer [50]; // Разработчик char Country [20]; // Страна int Year; // Первый полет, год char Type [50]; // Тип struct // Двигатель { char Type [50]; // Тип двигателя int Power; // Мощность двигателя, л.с. } Engine; int HighSpeed; // Максимальная скорость, км/ч int PracticalDistance; // Практическая дальность, км int TimeToClime; // Скороподъемность, м/мин int PracticalCeiling; // Практический потолок, м char Armament [200]; // Вооружение }Airplane1, Airplane2; FILE *FileBase; // Файловая переменная char FileName [15] = ""; // Имя файла char FileExpansion [5] = ".dat"; // Расширение файла int main(int argc, char* argv[]) { Airplane1.HighSpeed = 794; Airplane1.Year = 795; printf ("\n | %-74s |", RusUni (" Введите имя файла: ")); gets (FileName); strcat (FileName, FileExpansion); // Склеивание имени и расширения файла if((FileBase = fopen (FileName, "w")))// открытие потока { fwrite (&Airplane1, sizeof (sAirplane), 1, FileBase); fclose (FileBase); } // Закрытие потока printf ("\n | %-30s%-45s|", RusUni (" Модификация: "), Airplane1.Modification); printf ("\n | %-30s%-45s|", RusUni (" Разработчик: "), Airplane1.Developer); printf ("\n | %-30s%-45s|", RusUni (" Страна: "), Airplane1.Country); printf ("\n | %-30s%-45d|", RusUni (" Первый полет, год: "), Airplane1.Year); printf ("\n | %-30s%-45s|", RusUni (" Тип: "), Airplane1.Type); printf ("\n | %-30s%-45s|", RusUni (" Тип двигателя: "), Airplane1.Engine.Type); printf ("\n | %-30s%-45d|", RusUni (" Мощность двигателя: "), Airplane1.Engine.Power); printf ("\n | %-30s%-45d|", RusUni (" Максимальная скорость, км/ч: "), Airplane1.HighSpeed); printf ("\n | %-30s%-45d|", RusUni (" Практическая дальность, км: "), Airplane1.PracticalDistance); printf ("\n | %-30s%-45d|", RusUni (" Скороподъемность, м/мин: "), Airplane1.TimeToClime); printf ("\n | %-30s%-45d|", RusUni (" Практический потолок, м: "), Airplane1.PracticalCeiling); printf ("\n | %-30s%-45s|", RusUni (" Вооружение: "), Airplane1.Armament); if((FileBase = fopen (FileName, "r"))) // открытие потока { fread (&Airplane2, sizeof (sAirplane), 1, FileBase); fclose (FileBase); }// Закрытие потока printf ("\n | %-30s%-45s|", RusUni (" Модификация: "), Airplane1.Modification); printf ("\n | %-30s%-45s|", RusUni (" Разработчик: "), Airplane2.Developer); printf ("\n | %-30s%-45s|", RusUni (" Страна: "), Airplane2.Country); printf ("\n | %-30s%-45d|", RusUni (" Первый полет, год: "), Airplane2.Year); printf ("\n | %-30s%-45s|", RusUni (" Тип: "), Airplane2.Type); printf ("\n | %-30s%-45s|", RusUni (" Тип двигателя: "), Airplane2.Engine.Type); printf ("\n | %-30s%-45d|", RusUni (" Мощность двигателя: "), Airplane2.Engine.Power); printf ("\n | %-30s%-45d|", RusUni (" Максимальная скорость, км/ч: "), Airplane2.HighSpeed); printf ("\n | %-30s%-45d|", RusUni (" Практическая дальность, км: "), Airplane2.PracticalDistance); printf ("\n | %-30s%-45d|", RusUni (" Скороподъемность, м/мин: "), Airplane2.TimeToClime); printf ("\n | %-30s%-45d|", RusUni (" Практический потолок, м: "), Airplane2.PracticalCeiling); printf ("\n | %-30s%-45s|", RusUni (" Вооружение: "), Airplane2.Armament); gets (FileName); return 1; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с записью в файл (Паскаль) | ThisIzGame | Помощь студентам | 2 | 24.03.2010 06:45 |
Проблема с записью текста в файл | AK BULLETS | Помощь студентам | 3 | 19.03.2010 19:22 |
Проблема с записью в файл | baltushka | Помощь студентам | 0 | 14.06.2009 17:39 |
Проблема с записью структуры в файл | JamS007 | Общие вопросы C/C++ | 5 | 07.01.2009 23:13 |
Проблема с записью в файл...( | Regloger | Помощь студентам | 10 | 15.11.2007 17:49 |