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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ В текстовом файле подсчитать количество строк которые начинаются и оканчиваются одной и той же буквой http://www.cyberforum.ru/cpp-beginners/thread285821.html
В текстовом файле подсчитать количество строк которые начинаются и оканчиваются одной и той же буквой
C++ РАБОТА С ЭКРАНОМ В ГРАФИЧЕСКОМ РЕЖИМЕ Написать программу которая строит графики функции y=f(x,a) на интервале c x d аргумента x при значениях параметра a, взятых из интервала e a f отрисовывает сетку и оси, обозначает и оцифровывает оси снабжает графики пояснениями (выражение для функции, значений параметра с указанием связи с соответствующей кривой) и удовлетворяет требованию наиболее полного использования экрана. Задание... http://www.cyberforum.ru/cpp-beginners/thread285814.html
C++ Работа с экраном в текстовом режиме.
Ниже дана программа которая до нажатия Esc повторяет действия: случайным образом выбирает размеры (соотношение 25х80) и положение окна на экране закрашивает его в случайный цвет помещает в него двойную рамку и текст “Привет!” со случайным цветом и включает источник звука со случайной частотой Все окна полностью размещаются на экране Задание: после нажатия Esc программа модифицируется по...
C++ Как проверить подстра ли первая введённая строчка второй строчки
Как проверить подстра ли первая введённая строчка второй строчки? Есть ли в С++ функция такая как strcmp или strlen?
C++ Найдите ошибки http://www.cyberforum.ru/cpp-beginners/thread285806.html
Мне нужно написать программу,которая создает текстовый файл в папке проекта,в нем должен находится текс,который я ввожу,а именно название рейса,номер рейса и тип самолета и так 4 раза. Кое-что набросал,надеюсь вы поможете. #include <fstream> #include <iostream> #include <string> using namespace std; struct aeroflot { char nazvanie;
C++ Перечисления, структуры и объединения. В результате выполнения задания должны быть разработаны алгоритм и программа управляемая с помощью меню. Для организации меню необходимо использовать тип-перечисление и переключатель switch, в действиях с комплексными числами (первая часть задания) - тип-структура, а для вычисления периметров, площадей и объемов фигур и тел (вторая часть задания) – тип-объединение. Для фигуры вычисляются... подробнее

Показать сообщение отдельно
Huk
3 / 3 / 0
Регистрация: 12.10.2009
Сообщений: 79
29.04.2011, 18:47     Работа с двоичным фаилом
ребят помогите мне найти ошибку в проге, вот условие - В середину двоичного файла целого типа записать элементы этого файла, меньшие числа, введенного с клавиатуры.
Проблема при записи в середину, оставшиеся числа повреждаются.
Никак не могу понять почему, возможно из-за неправильного перевода указателя записи, но не вижу ошибки.
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;
}
зарание благодарен
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru