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

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

Войти
Регистрация
Восстановить пароль
 
Huk
3 / 3 / 0
Регистрация: 12.10.2009
Сообщений: 79
#1

Работа с двоичным фаилом - C++

29.04.2011, 18:47. Просмотров 374. Ответов 0
Метки нет (Все метки)

ребят помогите мне найти ошибку в проге, вот условие - В середину двоичного файла целого типа записать элементы этого файла, меньшие числа, введенного с клавиатуры.
Проблема при записи в середину, оставшиеся числа повреждаются.
Никак не могу понять почему, возможно из-за неправильного перевода указателя записи, но не вижу ошибки.
P.S. во время отладки,возникали посторонние проблемы, наиболее непонятная мне - ошибка при попытке создать файл.
C++
1
2
3
4
5
6
//Вот тут
        fstream st("A.dat",ios::out|ios::binary|ios::in);
    if( !st ){
        cerr<<"ERROR!!!";
        exit(1);
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <time.h>
using namespace std;
int main()
{
    time_t t;
    srand(time(&t));
    setlocale(LC_ALL,"RUSSIAN");
    int value = 0;
    
        int nu = 0;
        cout<<"Введите число: "; cin >> nu;
 
    fstream st("A.dat",ios::out|ios::binary|ios::in);
    if( !st ){
        cerr<<"ERROR!!!";
        exit(1);
    }
    else{
        const int n = 10;
        int A[n], count = 0;
        for(int i=0;i<n;i++)
        {   
            value = rand()%5;
            if (value < nu)
                A[count++] = value;
            st.write(reinterpret_cast<char*>(&value), sizeof(int));
        }
        //выводим на экран, что у нас получилось
        //переводим на начало файла указатель чтения
        st.seekg(0,ios::beg);
        for(int i=0;i<n;i++)
        {   
            st.read(reinterpret_cast<char*>(&value), sizeof(int));
            cout << value << ' ';
        }
        cout<<endl;
 
        cout<<"\nЧисла записаны успешно. Начинаем выполнение задачи%)\n";
 
        //переводим указатель записи в середину
 
        st.seekp(sizeof(int)*n/2,ios::beg);
        int value = 0;
        for(int i=0;i<count;i++)
        {   
            value = A[i];
            st.write(reinterpret_cast<char*>(&value), sizeof(int));
        }
        cout<<"\nЗадача выполнена.\n";
        //переводим на начало файла указатель чтения
        st.seekg(0,ios::beg);
        for(int i=0;i<(n+count);i++)
        {   
            st.read(reinterpret_cast<char*>(&value), sizeof(int));
            cout << value << ' ';
        }
        cout<<endl;
        st.close();
    }
    system("PAUSE");
    return 0;
}
зарание благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 18:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с двоичным фаилом (C++):

Работа с текстовым фаилом. - C++
Получил вот такое задание: Составить программу, которая читает текстовый файл и выполняет его преобразование. Примечания: 1. Имя...

Работа с двоичным файлом - C++
Ребят помогите. Создать двоичный файл и записать в него степени числа 3. Вывести на экран компоненты файла с четным порядковым номером....

работа с двоичным кодом - C++
Задача не сложная но материала на ту тему Я на просторах интернета так и не нашел( Через небольшую программку (самопальный HEX ридер) Я...

Работа с двоичным файлом: Перевести содержание файла в поток байт - C++
Существует файл D:\proba.txt в себе он содержит: 68 11 00 00 00 00 71 00 00 00 09 01 C8 01 00 00 01... Он довольно таки длинный до 253...

Сортировка двоичным включением - C++
У меня задание продемонстрировать в виде таблицы алгоритм роботы сортировки с двоичным включением на массиве 15,4,10,8,6,9,16,1.Написал...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2011, 18:47
Привет! Вот еще темы с ответами:

Маленькая программка - вопрос по двоичным числам. - C++
Наткнулся на это. Подскажите как добавить в функционал программки еще и двоичные числа.. PS. хз, но точно не &quot;bin&quot; :) #include...

Задача с двоичным поиском в упорядоченном массиве - C++
Может, кто с кодом помочь и комментариями. Дан упорядоченный по неубыванию целочисленный массив и набор чисел ki. Требуется для...

Поиск элемента массива прямым и двоичным способом - C++
Написать программу поиска элемента массива 2 способами: прямым и двоичным поиском. Массив нужно задать с помощью srand. Перед поиском...

Определить, является ли введённая с клавиатуры строка двоичным числом - C++
Задание: Напишите программу, которая определяет, является ли введённая с клавиатуры строка двоичным числом. Люди помогите пожалуйсто...


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

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

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