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

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

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

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

16.06.2012, 21:16. Просмотров 591. Ответов 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 ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2012, 21:16     Не работает _fseeki64
Посмотрите здесь:

Функции fseek, _fseeki64 - C++
Ребят как по умному объяснить преподавателю что я использую функцию _fseeki64 для того чтобы создавать большие файлы, потому что функция...

В корпусе не работает пк, без корпуса работает - Компьютерное железо
Добрый вечер! Проблема моего ПК в том, что после зависания (Завис в процессе воспроизведения видео, рядом даже не было никого) и...

На отладке работает, но не работает в нужной папке - C#
Ужас какой то, не могу вычислить в чем ошибка, ведь на отладке и релизе работает, а когда начинаешь пихать в папку где оно должно потом...

Работает wi-fi на ноуте но не работает на смартфоне lg p970 - Wi-Fi
Доброго времени суток проблема следующая, есть модем 4 портовый tenda w548d, интернет работает как на перональном компьтере так и на...

Запрос работает в Access, но не работает в коде - Visual Basic .NET
Можете подсказать. Объединила Visual Studio(Basic) с Access, но на одной из форм не работает запрос, который в Access работает....

Код работает в debug но не работает в release - Visual C++
#include "stdafx.h" #include "mxml.h" #include "stdio.h" int main(){ mxml_node_t *topNode; FILE *f=NULL; ...

1C 8.x Универсальный отчет 50х50, работает не работает :) - 1С
1С 8.1 Управление торговлей. Универсальный отчет по регистру "ВБС" выводит дополнительные поля, а по другому регистру "БалансКлиента" не...

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

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

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

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

Код не работает в Intellij, но работает NetBeans - JAVA IDE
Почему один и тот же код, не работает Intellij, но работает в NetBeans import javax.swing.*; import java.awt.*; public class...

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

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

Не работает монитор комп работает а на мониторе нет изображения что делать ? - Компьютерное железо
У меня компьютер старый давно покупал и мне захотелось проверить включается или нет и тут возникла одна проблема не включается монитор (...

В Windows Forms некоректно работает метод, хотя в консоли работает правильно - C#
//Данный метод должен заменять все элементы в массиве на 1, после найменьшего. public string getNewArray(int array) { ...


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

Или воспользуйтесь поиском по форуму:
Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
16.06.2012, 22:30  [ТС]     Не работает _fseeki64 #9
Цитата Сообщение от grizlik78 Посмотреть сообщение
nolock-версия должна быть несколько быстрее, поскольку не использует блокировки для обеспечения нормальной работы в многопоточном приложении. Если потоки не используются, то можно пользовать nolock
А, не, тогда надо блокировать обязательно. Еще раз спасибо.
Yandex
Объявления
16.06.2012, 22:30     Не работает _fseeki64
Ответ Создать тему
Опции темы

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