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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
qANGELp
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 9
#1

fopen() - открыть с дозаписью - C++

28.11.2013, 20:09. Просмотров 1701. Ответов 3
Метки нет (Все метки)

Здравствуйте, извините за нубовский вопрос. у меня следующая проблема:
Есть бинарный файл. в процессе работы с ним нужно по всему ему бегать и что-то писать, что-то читать.
Файл можно открыть с ключиками
"r" Открывает текстовый файл для чтения
"w" Создает текстовый файл для записи
"a" Дописывает в текстовый файл
"rb" Открывает двоичный файл для чтения
"wb" Создает двоичный файл для записи
"ab" Дописывает в двоичный файл
"r+" Открывает текстовый файл для чтения и записи
"w+" Создает текстовый файл для чтения и записи
"a+" Открывает текстовый файл для чтения и записи
"rb+" или "r+b" Открывает двоичный файл для чтения и записи
"wb+" или "w+b" Создает двоичный файл для чтения и записи
"ab+" или "a+b" Открывает двоичный файл для чтения и записи
Логически подумав я принял решение что из этого всего мне подходит "ab+" или "a+b".
для позиционирования по файлу использую fseek(). Но вот в чем беда.

Код
//pos - позиция для чтения/записи
//Val - переменная для чтения/записи


fseek(fs, pos , SEEK_SET); //устанавливаем курсор в нужную позицию
fread(&Val, 1, 1, fs);         //Читаем текущее значение
...
fseek(fs, pos , SEEK_SET); //устанавливаем курсор в нужную позицию
fwrite(&Val, 1, 1, fs);        //Записываем данные
Вышеприведенный код записывает данные не в позицию, которую я указал, а в конец файла, в то время как мне нужно, чтоб в указную.

Как можно заставить писать в указанную позицию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 20:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос fopen() - открыть с дозаписью (C++):

c/c++ fopen() как открыть файл по ссылке? - C++
Так не работает: FILE *fp = fopen( "http://127.0.0.1/list.txt", "r" );

fopen - C++
Добрый день! Мне нужно было сохранить данные в текстовый файл. Для открытия файла я использовал функцию fopen. Программа скомпилировалась,...

fopen() - C++
Win XP SP2, VS 2005 не могу понять, почему fopen() не работает? Просмотрел в поиске, на форумах - вроде все понятно, а не работает. В чем...

Fopen в vs 2013 - C++
Привет! разбирался с фалами, и пришел к тупику. Пожалуйста, подскажите, что не так. я всего-то хотел попробовать создать и открыть файл. ...

FOPEN не то открывает - C++
помогите у меня FOPEN открывает файл It is an example using fseek and ftell functions, а не my_file.txt #include int main(void) { ...

вопрос по fopen - C++
Вечер добрый. стандартно для открытия файла пользуюсь fopen, сейчас появилась задача открывать через переменную, например...

3
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 20:12 #2
qANGELp, вообще при записи на позицию N он будет ПЕРЕзаписывать (насколько я помню и понимаю), а не записывать. Более того, если работаете с файлами в w/r режиме, то после каждого write используйте fflush() - она сбрасывает кэшированные данные в файл, иначе после последующего fseek/fread получите дикий мусор и, как я, будете месяц мучаться. Я всех преподов в университете задолбал с этим вопросом, пока не помогли люди добрые здесь >_<
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.11.2013, 20:18 #3
Цитата Сообщение от qANGELp Посмотреть сообщение
Логически подумав я принял решение что из этого всего мне подходит "ab+" или "a+b".
При дозаписи пишет только в конец файла, читает из любого места. Открывайте "rb+". И учитывайте то, о чём nexen написал.
0
qANGELp
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 9
28.11.2013, 20:28  [ТС] #4
Спасибо вам огромное. пол дня не мог понять в чем проблема. теперь все работает
0
28.11.2013, 20:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 20:28
Привет! Вот еще темы с ответами:

fopen и fdopen - C++
Помогите, пожалуйста, разобраться. Есть код скрипта, выводит картинку в браузере, скачал с инета: // Результат работы скрипта -...

Выдается ошибка на fopen - C++
#include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &quot;stdafx.h&quot; using namespace std; int main() { int...

Работа с курсором в fopen - C++
Задача такова: нужно записать инфу в через fopen в CSV файл. Загвоздка в том, что информация об одном обьекте сначала вычисляется и...

Компилятор ругается на fopen - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main() { FILE *f =...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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