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

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

Войти
Регистрация
Восстановить пароль
 
JustTry
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 9
#1

Увеличивается размер файла при записи - C++

07.08.2014, 15:12. Просмотров 268. Ответов 4
Метки нет (Все метки)

Всем привет. Возник такой вот вопрос. Программа записывает раз за разом(не добавляя в конец а перезаписывая) в один и тот же файл объект с фиксированным размером (28 байт). И после нескольки запусков размер меняется на 1-2 байта, так дошло уже до 36. С чем может быть связано такое изменение размера, и не повлияет ли это на позиционирование в файле?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2014, 15:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Увеличивается размер файла при записи (C++):

Два динамич. массива, размер увеличивается+1. MSVS ошибка - C++
полдня ломаю голову, не могу понять что не так и где что выходит, посмотрите, пожалуйста. Хуже то, что Code::Blocks работает, а VS2015...

Как изменить размер открытого для записи файла - C++
Доброе время суток. Задание: В текстовом файле заменить все последовательности идущих подряд пробелов одним пробелом. Как изменить...

Как узнать текущий размер файла, открытого для записи? - C++
File=CreateFile(FilePath.c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);, потом в этот файл...

Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Опре-делить: а) прир - C++
Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы....

Размер исполняемого файла при статической и динамической линковке - C++
В общем, компилирую простой пример: int main() { } Компилирую со статической и динамической линковкой: g++ file.cpp -static -o static...

Можно ли как-то исправить слишком большой размер файла при подключении библиотеки iostream? - C++
Здравия всем! если откомпилировать это: #include <stdio.h> int main() { printf("text"); return 0; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
07.08.2014, 15:13 #2
Это может быть связано с тем, как происходит запись в файл. Покажи как открываешь и записываешь.
gazlan
3131 / 1906 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
07.08.2014, 15:17 #3
Цитата Сообщение от JustTry Посмотреть сообщение
Программа записывает
Ну, так покажите, как записывает. Или ждете диагноз по фотографии?
Могу предположить, что пишете в бинарный файл в текстовом режиме (EOL translation).
JustTry
0 / 0 / 0
Регистрация: 25.06.2014
Сообщений: 9
07.08.2014, 15:39  [ТС] #4
C++
1
2
3
4
5
6
7
8
9
10
11
// Считываю из файла
ifstream fin(FILE, ios::in);
fin.read((char*) & object, size);
fin.close();
 
// ... Работаю с объектом
 
// Запись в файл
ofstream fout(FILE, ios::out);
fout.write((char*) & object, size);
fout.close();
igorrr37
1646 / 1274 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.08.2014, 17:03 #5
открывать файл надо в бинарном режиме std::ios::binary, иначе при записи перед каждым переводом строки будет добавлен возврат каретки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2014, 17:03
Привет! Вот еще темы с ответами:

При нажатии на бобра не увеличивается счет - C++
В игре при нажатии на бобра должен увеличиваться счет (currentCounter), но он почему-то не увеличивается. struct C_Events { ...

Ошибка доступа при записи файла - C++
#include <Windows.h> #include <tchar.h> #include <stdio.h> #include <conio.h> int _tmain(int argc, _TCHAR* argv) { TCHAR...

Ошибки при записи и чтении из файла - C++
double calc(int n, double sum, int a, int b, double p, double f) { if(n == 0) return sum; else{ sum += p...

Выход при неудачном чтении/записи файла - C++
Как правильнее делать? void f() { if ((fl = fopen("name", "mode")) == NULL) { cout << "Error! << endl"; exit(1); } ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.08.2014, 17:03
Ответ Создать тему
Опции темы

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