Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 104
1

Криво читается бинарник

08.10.2013, 16:34. Показов 418. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравия желаю!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
using namespace std;
 
void main()
{
    char l=6,c=3,b;
    fstream a("LOL.txt",ios::out|ios::binary|ios::trunc);
    a.write(&l,sizeof(l));
    a.close();
 
    a.open("LOL.txt",ios::out|ios::binary|ios::ate);
    a.write(&c,sizeof(l));
    a.close();
 
    a.open("LOL.txt",ios::binary|ios::in);
    cout<<f.tellg()<<"   "<<a.rdbuf()->in_avail();
    a.read(&b,sizeof(l));
    a.close();
}
Собственно, не могу понять, почему при чтении в b записывается 3, а не 6.
seekg() говорит, что указатель на 0 элементе стоит.
Что еще не понятно: in_avail() также возвращает 0.
То есть и считать он не может ничего, а в b пишется последнее записанное.
Может я не правильно понял работу функций open/close...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2013, 16:34
Ответы с готовыми решениями:

Неправильно записывается бинарник
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt;...

GCC 4.7 компилируется, но не запускается бинарник
Где облажался? int main() { int a = {5,}; int b = {7,}; int sum=0; for(int i = 1; i...

Запись структуры с строкой в бинарник
Здравствуйте, уважаемые форумчане! Интересовал вопрос записи структуры, в который есть string, в...

Запись в бинарник и его чтение
Привет всем, задача состоит в том, что нужно записать в бинарник сведения о сканерах и считать их...

4
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
08.10.2013, 16:48 2
C++
1
a.open("LOL.txt",ios::out|ios::binary|ios::app);
а если второй раз открыть так?
0
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 104
08.10.2013, 16:50  [ТС] 3
Спасибо, это убрало ошибку с b.

Но in_avail() всё равно вернуло 0... Почему же? Оно же вроде кол-во байт оставшихся возвращает.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
08.10.2013, 17:09 4
Попробуйте вызвать
C++
1
std::ios::sync_with_stdio(false);
в начале main
хотя...
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
08.10.2013, 17:29 5
http://stackoverflow.com/quest... set-eofbit
in_avail() returns the number of chars it can see in the internal buffer, if any. Otherwise it calls showmanyc() to try to detect if chars are known to be available elsewhere, so a buffer fill request is guaranteed to succeed.

In turn, showmanyc() will return the number of chars it knows about, if any, or -1 if it knows that a read will fail, or 0 if it doesn't have a clue.
Криво читается бинарник
0
08.10.2013, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2013, 17:29
Помогаю со студенческими работами здесь

запись и чтение структуры в бинарник
как правильно записывать и считывать структуру из бинарника? при этом коде программа виснет сами...

Как побайтно считать бинарник?
Как побайтно считать бинарник? Именно в переменную тип char.

Прочитать бинарник картинки через std::cin
Здравствуйте дорогие форумчане! У меня возникла такая не тривиальная задача, вот собственно в чем...

Где скачать бинарник haartraining для opencv
Где скачать бинарник haartraining для opencv ?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru