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

В начало двоичного файла целого типа дописать нечетные элементы этого файла. - C++

Восстановить пароль Регистрация
 
freezz
Сообщений: n/a
29.11.2011, 22:43     В начало двоичного файла целого типа дописать нечетные элементы этого файла. #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
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
int main()
{ int a;
    srand((unsigned int)time(0));
    {
        cout << "Writing to file:" << endl;
        ofstream out("numbers.bin",ios::binary);
        for (int i = 0; i < 10; i++)
        {
            int number = rand()%9;
            out.write((const char*)&number,sizeof(int));
            cout << number << " ";
        }
        cout << endl;
    }
 
    {
 
    fstream in_out("numbers.bin",ios::binary|ios::in|ios::out);
    if (!in_out)
    {
        cout << "error! opening numbers.bin!" << endl;
        return 0;
    }
 
    in_out.seekg(0,ios::end);
    int numNumbers = in_out.tellg()/sizeof(int);
    if (!numNumbers)
    {
        cout << "error! no numbers!" << endl;
    }
 
    cout << "Read from file:" << endl;
    int lastPos = numNumbers;
    for (int j = 0; j < numNumbers; j++)
    {
        int n;
        in_out.seekg(j*sizeof(int),ios::beg);
        in_out.read((char*)&n,sizeof(int));
        cout << n << " ";
        if ((n%2) == 0)
        {
            in_out.seekp(lastPos*sizeof(int),ios::beg);
            in_out.write((const char*)&n,sizeof(int));
            lastPos++;
        }
    }
    cout << endl;
    
    }
 
    ifstream f("numbers.bin",ios_base::binary);
    f.seekg(0,ios::end);
    int numNumbers = f.tellg()/sizeof(int);
    if (!numNumbers)
    {
        cout << "error! no numbers!" << endl;
    }
    f.seekg(0,ios::beg);
    cout << "File test after writing even numbers at the end:" << endl;
    for (int j = 0; j < numNumbers; j++)
    {
        int number;
        f.read((char*)&number,sizeof(int));
        cout << number << " ";
    }
    cout << endl;
cin >>a;
    return 0;
}
Добавлено через 21 минуту
ios::end я так понял нужно заменить на ios::beg....для вставки в начало списка...

Добавлено через 40 минут
пацаны...срочно нужно!!

Добавлено через 1 час 8 минут
для нечетного if ((n%2) == 0) меняем на if ((n%2) != 0)...
кто с началом списка помочь может???есть хоть кто то разбирающийся
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 22:43     В начало двоичного файла целого типа дописать нечетные элементы этого файла.
Посмотрите здесь:

C++ Дописать символ в начало файла
C++ Считывание с двоичного файла
C++ чтение двоичного файла
C++ Создание двоичного файла на С++
использование двоичного файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.11.2011, 14:35     В начало двоичного файла целого типа дописать нечетные элементы этого файла. #2
не бывает файлов целого типа
не бывает чётных файлов
чтобы дописать что-то в начало файла, его нужно полностью переписать с помощью временного файла
freezz
Сообщений: n/a
30.11.2011, 16:04     В начало двоичного файла целого типа дописать нечетные элементы этого файла. #3
ну так это я и пытаюсь узнать...КАК???
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.11.2011, 16:45     В начало двоичного файла целого типа дописать нечетные элементы этого файла. #4
открой исходный файл
открой временный файл
читай элементы из исходного
записывай во временный нечётные элементы
перемотай исходный файл
читай элементы из исходного
записывай во временный все элементы
закрой исходный файл, открой его на запись
перемотай временный файл
перепиши всё из временного в исходный
(временный файл можно сохранить на диске
если программа выключится в середине, данные потеряются)
Yandex
Объявления
30.11.2011, 16:45     В начало двоичного файла целого типа дописать нечетные элементы этого файла.
Ответ Создать тему
Опции темы

Текущее время: 04:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru