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

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

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

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

29.04.2011, 00:55. Просмотров 520. Ответов 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;
}
если есть какой исходник вышлите с примером удаления.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 00:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами (C++):

Работа с файлами - C++
Нужно записать с одного файла в другой на С++ Добавлено через 46 минут ап ап ап

Работа с файлами - C++
Дан файл File_in.dat, содержащий 65536 целых чисел. Считать из файла 9 чисел начиная с 150-го. Сформировать из них матрицу A(3х3) и...

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

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

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

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

2
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 15:35 #2
Задание нормально написать можете??
0
/*Alexander*/
5 / 5 / 0
Регистрация: 29.04.2010
Сообщений: 88
29.04.2011, 20:22  [ТС] #3
Есть склад в котором имеются продукция. НУжно произвести инвентаризацию. ключ продукции название , количество, цена должны хранитьсяи в файле. если изменится количество или ваще продукции не станет, нужно изменить данные файла соотвественно. у меня уже есть всё кроме инвентаризации. Но я у вас хотел узнать как изменить и удалить . У мя чёта не получается)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2011, 20:22
Привет! Вот еще темы с ответами:

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

Работа с файлами в С++ - C++
Как данные(символьные) с файла .txt преобразовать у матрицу?

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

Работа с файлами - C++
Программа на TC! Создать файл, содержащий сведения о товарах, хранящихся на складе: шифр, наименование товара, количество единиц,...


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

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

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