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

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

Войти
Регистрация
Восстановить пароль
 
/*Alexander*/
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
#1

Работа с файлами - C++

29.04.2011, 00:55. Просмотров 499. Ответов 2
Метки нет (Все метки)

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



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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include"stdafx.h"
#include<string.h>
#include<fstream>
#include<iostream>
#include<stdlib.h>
using namespace std;
 
class sclad
{
public:
    int key_product;
    char name_isdel[20];
    int colich;
    float sum;
}buf;
 
 
class File
{
    char file_name[20];
    fstream *fstr;
    int maxpos;
public:
    File(char* file_name2){
        strncpy(file_name,file_name2,20);
        fstr=new fstream();}
 
    friend ostream &operator<<(ostream &stream, sclad &o);
    friend istream &operator>>(ostream &stream, sclad &o);
    int read(sclad &p);
    int modified(int pos);
    const char* getname();
    void Remote();
    void add(sclad);
    int Open();
    ~File(){};
    
 
};
 
int File::Open()
{
    fstr->open(file_name,ios::in | ios::out |ios::binary | ios::trunc);
    if(!fstr->is_open())
        return -1;
 
    return 0;
}
 
istream &operator>>(istream &stream, sclad &o)
{
    cout<<" key product"<<endl;
    cin>>o.key_product;
    cout<<" name product"<<endl;
    cin>>o.name_isdel;
    cout<<" numder probuct"<<endl;
    cin>>o.colich;;
    cout<<" vaiue probuct"<<endl;
    cin>>o.sum;
    return stream;
}
 
ostream &operator<<(ostream &stream, File &o)
{
    sclad p;
    stream<<"File"<<o.getname()<<endl;
    o.Remote();
    while(o.read(p))
    {
 
    stream<<p.key_product<<endl;
    stream<<p.name_isdel<<endl;
    stream<<p.colich<<endl;
    stream<<p.sum<<endl;
    }
    return stream;
}
 
void File::add(sclad buf)
{
    fstr->seekp(0,ios_base::end);
    fstr->write(reinterpret_cast<char*>(&buf),sizeof(sclad));
    fstr->flush();
}
void File::Remote()
{
    fstr->seekg(0,ios_base::beg);
    fstr->seekp(0,ios_base::beg);
    fstr->clear();
}
 
 
int File::read(sclad &p)
{
    if(!fstr->eof() && fstr->read(reinterpret_cast<char*>(&p),sizeof(sclad)))
        return 1;
    fstr->clear();
    return 0;
}
    // ФУНКЦИЯ УДАЛЕНИЯ но работает некорректно
int File::modified(int pos)
{   
    Remote();
    fstr->seekp(0,ios_base::end);
    maxpos=fstr->tellp();
    maxpos/=sizeof(sclad);
    if(maxpos>pos) return -1;
    fstr->seekp(pos*sizeof(sclad),ios::beg);
    fstr->write(reinterpret_cast<char*>(&buf),sizeof(sclad));
    while(pos<maxpos)
    {
        fstr->read(reinterpret_cast<char*>(&buf),sizeof(sclad));
        fstr->seekp(-2*sizeof(sclad),ios_base::cur);
        fstr->write(reinterpret_cast<char*>(&buf),sizeof(sclad));
        fstr->seekg(sizeof(sclad),ios_base::cur);
        pos++;
    }
    strcpy(buf.name_isdel," ");
    buf.key_product=0;
        buf.colich=0;
        buf.sum=0;
        fstr->seekp(-sizeof(sclad),ios_base::end);
    fstr->write(reinterpret_cast<char*>(&buf),sizeof(sclad));
    fstr->flush();
    //return 0;
}
 
 
 
const char* File::getname()
{
    return this->file_name;
}
 
int main()
{
    char i,key;
    File myfile("fil");
    if(myfile.Open()==-1)
    {
        cout<<"Can't open the file "<<endl;
        return -1;
    }
 
    do
    {
        cout<<" 1. enter new product"<<endl;
        cout<<" 2. image file"<<endl;
        cout<<" 3. modified"<<endl;
        cout<<" 4. Exit "<<endl;
        cout<<" Enter para menu"<<endl;
        cout<<"->";
        cin>>i;
 
        switch(i)
        {
        case '1':
            cin>>buf;
            myfile.add(buf);
            break;
        case '2':
            cout<<myfile<<endl;
            break;
        case '3':
            cout<< "enter key"<<endl;
            cin>>key;
            myfile.modified(key);
            break;
        }   
    }while((i<'5') & (i>'0'));
    return 0;
}
если есть какой исходник вышлите с примером удаления.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 00:55     Работа с файлами
Посмотрите здесь:

Работа с файлами - C++
Есть толпа зверушек. Нужно указать: номер записи, название животного, длительность его жизни, его среду обитания и вес. При задании среды...

Работа с файлами - C++
В радиоателье хранятся квитанции о сданных в ремонт телевизорах. Каждая квитанция содержит марку телевизора, дату приемки в ремонт,...

Работа с файлами - C++
Открыть каталог, проверить файлы на обычность, проверить в именах файлов наличие знака $, и если он есть заменить на размер файла. ...

Работа с файлами - C++
Задание звучит так: каждая строка файла содержит такую последовательность символов: a#b, где a,b - целые числа, #-одна из арифметических...

работа с файлами - C++
Объясните пожалуйста программу. Нужно ли мне создать и записать в текстовый файл самой или он сам создаётся и всё туда записывается? И...

работа с файлами в С/C++ - C++
Привет! Нужна помощь специалиста) Подскажите, пожалуйста, как из файла filename.txt, в котором содержится матрица из 1000 на 5, записать...

Работа с файлами - C++
Задали лабораторку не успеваю разобраться что к чему?Помоги пожайлуста.

Работа с файлами - C++
Создать программу , которая создает файл и состоит из N строк . В первой строке напишите одну цифру &quot;1&quot; , во второй две цифры &quot;2&quot; и тд в...

Работа с файлами - C++
создать файл, содержащие сведения о количестве изделий, собранных сборщиками цеха неделю. Каждая запись содержит поля: фамилия...

Работа с файлами - C++
помогите написать программу на си !Которая считывает текст из файла и выводит на экран предложения не содержащие запятых.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
532 / 437 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 15:35     Работа с файлами #2
Задание нормально написать можете??
/*Alexander*/
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
29.04.2011, 20:22  [ТС]     Работа с файлами #3
Есть склад в котором имеются продукция. НУжно произвести инвентаризацию. ключ продукции название , количество, цена должны хранитьсяи в файле. если изменится количество или ваще продукции не станет, нужно изменить данные файла соотвественно. у меня уже есть всё кроме инвентаризации. Но я у вас хотел узнать как изменить и удалить . У мя чёта не получается)
Yandex
Объявления
29.04.2011, 20:22     Работа с файлами
Ответ Создать тему
Опции темы

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