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

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

Войти
Регистрация
Восстановить пароль
 
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
#1

Не работает _fseeki64 - C++

16.06.2012, 21:16. Просмотров 629. Ответов 8
Метки нет (Все метки)

Приветствую.
Не работает функция _fseeki64, сдвиг указателя не производится, либо я не так понимаю действия этой функции.
В урезанном виде код выглядит так:
C++
1
2
3
4
5
6
7
8
char str1[] = {'a', 'b', 'c'};
char str2[] = {'1', '2', '3'};
FILE* file;
_wfopen_s(&this->file, address.c_str(), L"ab");
_fseeki64(this->file, 0L, SEEK_SET);
fwrite(&str1, sizeof(char), sizeof(str1), file);
_fseeki64(this->file, 0L, SEEK_SET);
fwrite(&str2, sizeof(char), sizeof(str2), file);
По идее в файле должно быть
123abc
а в реальности он выглядит так
abc123

Поиск в инете не дал окончательного ответа.
Кто знает в чем загвоздка?

П.с.
Чем отличаются функции _fseeki64 и _fseeki64_nolock ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает _fseeki64 (C++):

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает - Windows 7
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

Через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает. Миниатюры - C++
через sublime text 3 и компилятор g++ работает, посоветовали скачать VS, не работает.

Из-за чего интернет работает на техникумовских компьютерах и не работает подключении к моему ноутбуку - Сети
В Техникуме есть разные компьютеры - для учителей - для студентов - библиотечные ...перепробовал и библиотечные и студенческие и...

Подключение библиотеки DLL C++: работает на примере консоли и не работает в WinForms App - C++/CLI WinForms
Здравствуйте! Помогите начинающему бедному студенту!! Осваиваю С++. В книге Прохоренко(программирование в visual studio 2010 express)...

Ноутбук работает только с Wi Fi роутера дома, в кафе не работает и везде. Почему? - Wi-Fi
Подскажите пожалуйста, почему у меня ноутбук с виндой 7, работает вай фай только дома с роутера. А когда я прихожу в кафе или в парк, у...

Не работает php на wps-е. Гланвая страница работает все остальное нет - PHP
На локальном дэнвере все отлично работает. Но при копировании на впс и сдоступом через сеть работает только главная страница сайта. Все...

8
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,020
16.06.2012, 21:55 #2
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Кто знает в чем загвоздка?
В режиме открытия файла. Попробуй "w+b" или "r+b", в зависимости от того, надо ли перезаписать файл или просто обновить его.

Цитата Сообщение от Russian_Dragon Посмотреть сообщение
По идее в файле должно быть
123abc
Нет, там будет только 123, так как символы abc перезапишутся, а не сдвинутся. Вставки внутри файла не бывает. Только перезапись.
1
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
16.06.2012, 22:05  [ТС] #3
Цитата Сообщение от grizlik78 Посмотреть сообщение
Нет, там будет только 123, так как символы abc перезапишутся, а не сдвинутся. Вставки внутри файла не бывает. Только перезапись.
Да, точно, именно это я и хотел получить. Просто переклиняло.

Цитата Сообщение от grizlik78 Посмотреть сообщение
В режиме открытия файла. Попробуй "w+b" или "r+b", в зависимости от того, надо ли перезаписать файл или просто обновить его.
О, спасибо, заработало.
Но теперь проблема с нормальным использованием. Мне в файл нужно не только записать, но и читать из него данные. Есть способ использовать только один указатель на файл?
0
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,020
16.06.2012, 22:09 #4
Цитата Сообщение от Russian_Dragon Посмотреть сообщение
Но теперь проблема с нормальным использованием. Мне в файл нужно не только записать, но и читать из него данные. Есть способ использовать только один указатель на файл?
А что за проблема? Вроде оба режима позволяют и чтение и запись.
1
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
16.06.2012, 22:17  [ТС] #5
Цитата Сообщение от grizlik78 Посмотреть сообщение
А что за проблема? Вроде оба режима позволяют и чтение и запись.
Я просто про флаги немного невнимательно прочитал. Спасибо, за подсказку, я нашел нужный режим работы "w+b".

А чем _fseeki64 от _fseeki64_nolock отличается? Что-то из msdn-а я не совсем понял в чем фокус.
0
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,020
16.06.2012, 22:19 #6
Хотя одна проблема всё-таки есть. Между операциями записи и чтения надо вставлять вызов одной из функций fflush, fseek, fsetpos, rewind (то есть, наверное, их 64-битные и "безопасные" аналоги).
0
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
16.06.2012, 22:23  [ТС] #7
Цитата Сообщение от grizlik78 Посмотреть сообщение
Хотя одна проблема всё-таки есть. Между операциями записи и чтения надо вставлять вызов одной из функций fflush, fseek, fsetpos, rewind (то есть, наверное, их 64-битные и "безопасные" аналоги).
Хорошо, потестим. Спасибо за предупреждение.
0
grizlik78
Эксперт С++
1967 / 1460 / 120
Регистрация: 29.05.2011
Сообщений: 3,020
16.06.2012, 22:26 #8
nolock-версия должна быть несколько быстрее, поскольку не использует блокировки для обеспечения нормальной работы в многопоточном приложении. Если потоки не используются, то можно пользовать nolock
1
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
16.06.2012, 22:30  [ТС] #9
Цитата Сообщение от grizlik78 Посмотреть сообщение
nolock-версия должна быть несколько быстрее, поскольку не использует блокировки для обеспечения нормальной работы в многопоточном приложении. Если потоки не используются, то можно пользовать nolock
А, не, тогда надо блокировать обязательно. Еще раз спасибо.
0
16.06.2012, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2012, 22:30
Привет! Вот еще темы с ответами:

Работа с excel: 11 версия не работает с 2010 офисом, но работает с 2007, 2013 - C++/CLI
Имеются несколько Microsoft.Office.Interop.Excel.dll,которые используются для записи в excel документ. Проблема в том что 11 версия не...

Не работает скомпилированный EXE файл хотя в самой среде игра работает - Unity, Unity3D
Я почти закончил разработку своей игры на Unity2D но после запуска скомпилированного EXE файла половина текстур не отображается хотя в...

Так работает или не работает второй слот для оперативной памяти - Оперативная память
Моему компьютеру уже больше 7-ми лет, купили мне его в сентября 2005 года. На то время очень даже неплохие характеристики: Процессор:...

Multimap STL - работает только запись в файл, поиск в файле не работает - C++
И снова здравствуйте. Снова я прошу вашей помощи. Переделал программу с мапом в мульти мап, но что то пошло не так и работает только запись...


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

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

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