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

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

Войти
Регистрация
Восстановить пароль
 
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
#1

Очистить файл - C++

29.05.2013, 19:46. Просмотров 1148. Ответов 5
Метки нет (Все метки)

Как через класы потоков очистить открытый файл? 32 строка вроде ф-ция для очистки, но она не очищает файл.
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
#include <fstream>
#include <iostream>
 
#define L 69
using namespace std;
 
class person
{
    char prizv[L];
    char n;
    char f;
public:
    void get_data()
    {
        cout << "\nEnter Last name, firs name and fatherstfo: ";
        cin >> prizv >> n >> f;
    };
    void out_data()
    {
        cout << "\nPerson: " << prizv  << " " << n << "." << f << ".";
    };
};
 
void main()
{
    char ch;
    person obj;
    fstream file;
    char adress[100];
    cin >> adress; //D:/file.dat
    file.open(adress, ios::app | ios::out | ios::in, ios::binary);
    file.clear();
    do 
    {
        cout << "\nEnter data\n";
        obj.get_data();
        file.write(reinterpret_cast<char*>(&obj), sizeof(obj));
        cout << "\nNext(y/n)? ";
        cin >> ch; 
        //file.close();
    }
    while (ch == 'y');
    file.seekg(0);
    file.read(reinterpret_cast<char*>(&obj), sizeof(obj));   while(!file.eof())    // Выход по EOF     
    {     
        cout << "\nPerson:";// вывести данные     
        obj.out_data();     // считать данные о следующем     
        file.read(reinterpret_cast<char*>(&obj), sizeof(obj));       
    }   
    cout << endl;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 19:46     Очистить файл
Посмотрите здесь:

Очистить файл - C++
Здравствуйте Перед использованием нужно очистить файл..он 100% будет не пустой в данной ветке std::cout&lt;&lt;&quot;input new pass&quot;; ...

Очистить текстовый файл - C++
есть функция сохранения в файл.. int out_file(char* filename,date* cor) { fstream file(filename); file.open(filename); while...

Как очистить файл с вводом множества объектов? - C++
Доброго времени суток! Написал код с вводом множества объектов. Ввожу объекты. Потом , понятное дело, они выводятся после read. Но если...

Подскажите, как очистить файл, после его работы - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;time.h&quot; #include &quot;stdlib.h&quot; #include &quot;string.h&quot; void...

Очистить поток - C++
Хотел с помощью куска кода (см.ниже) очистить буфер связанный с потоком cin. Но выражение в скобках по какой-то причине не изменяется? ...

Очистить стэк - C++
Как очистить стек? int main() { stack&lt;double&gt; s; for (int i = 0; i &lt; 10; i++) s.push(i); while (!s.empty())...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.05.2013, 19:53     Очистить файл #2
Если очистить существующий:
C++
1
file.open(filename, ios::trunc);
Можно просто открывать для записи. Будет создан новый:
C++
1
file.open(filename, ios::out);
В 32 строке поток очищается (флаги сбрасываются), а не файл очищается.
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
29.05.2013, 20:04  [ТС]     Очистить файл #3
alsav22, так файл не читает.
Кликните здесь для просмотра всего текста
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
#include <fstream>
#include <iostream>
 
#define L 69
using namespace std;
 
class person
{
    char prizv[L];
    char n;
    char f;
public:
    void get_data()
    {
        cout << "\nEnter Last name, firs name and fatherstfo: ";
        cin >> prizv >> n >> f;
    };
    void out_data()
    {
        cout << "\nPerson: " << prizv  << " " << n << "." << f << ".";
    };
};
 
void main()
{
    char ch;
    person obj;
    fstream file;
    char adress[100];
    cin >> adress; //D:/file.dat
    //file.open(adress, ios::app | ios::out | ios::in, ios::binary);
    file.open(adress, ios::out);
    do 
    {
        cout << "\nEnter data\n";
        obj.get_data();
        file.write(reinterpret_cast<char*>(&obj), sizeof(obj));
        cout << "\nNext(y/n)? ";
        cin >> ch; 
    }
    while (ch == 'y');
    file.seekg(0);
    file.read(reinterpret_cast<char*>(&obj), sizeof(obj));   while(!file.eof())    // Выход по EOF     
    {     
        cout << "\nPerson:";// вывести данные     
        obj.out_data();     // считать данные о следующем     
        file.read(reinterpret_cast<char*>(&obj), sizeof(obj));       
    }   
    cout << endl;
    system("pause");
}
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
29.05.2013, 20:05     Очистить файл #4
C++
1
 file.open(adress, ios::out | ios::in);
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
29.05.2013, 20:12  [ТС]     Очистить файл #5
alsav22, перед тем как ввести информацию мне надо файл очистить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 21:03     Очистить файл
Еще ссылки по теме:

Очистить экран - C++
Как отчистить экран в с++ ????

Как очистить ostringstream? - C++
Есть код: #include &lt;sstream&gt; #include &lt;bitset&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; int main() { ...

Как очистить экран? - C++
Как очистить экран?

Очистить строку консоли - C++
Даны строчки консоли Надо последнюю строчку стереть и записать новые данные. Читал, можно через \r заполнить пробелами, но нигде не смог...

Очистить массив чаров - C++
#include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;windows.h&gt; #include &lt;sstream&gt; using...

Как очистить cin? - C++
собственно защита от дурака, от пользователя требуется цифра, а он вводит букву, и все следующие cin не работают, cin.clear() не подходит,...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.05.2013, 21:03     Очистить файл #6
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
void main()
{
    char ch;
    person obj;
    fstream file;
    char adress[100];
    cin >> adress; //D:/file.dat
    //file.open(adress, ios::app | ios::out | ios::in, ios::binary);
    file.open(adress, ios::out | ios::binary);
    do 
    {
        cout << "\nEnter data\n";
        obj.get_data();
        file.write(reinterpret_cast<char*>(&obj), sizeof(obj));
        cout << "\nNext(y/n)? ";
        cin >> ch; 
    } while (ch == 'y');
    file.close();
    
    file.open(adress, ios::in | ios::binary);
    
    while(true)         
    {     
        file.read(reinterpret_cast<char*>(&obj), sizeof(obj));
        if (file.eof()) break;  
        cout << "\nPerson:";// вывести данные     
        obj.out_data();     // считать данные о следующем     
             
    }   
    file.close();
    
    cout << endl;
    system("pause");
}
Добавлено через 50 секунд
o33ik, я там подправил выход из чтения.

Добавлено через 13 минут
Можно ещё так:
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
void main()
{
    char ch;
    person obj;
    fstream file;
    char adress[100];
    cin >> adress; //D:/file.dat
    file.open(adress, ios::out | ios::in | ios::trunc | ios::binary);
    
    do 
    {
        cout << "\nEnter data\n";
        obj.get_data();
        file.write(reinterpret_cast<char*>(&obj), sizeof(obj));
        cout << "\nNext(y/n)? ";
        cin >> ch; 
    } while (ch == 'y');
    file.flush();
    file.seekg(0);
    
    while(true)      
    {     
        file.read(reinterpret_cast<char*>(&obj), sizeof(obj));
        if (file.eof()) break;  
        cout << "\nPerson:";// вывести данные     
        obj.out_data();     // считать данные о следующем     
             
    }   
    file.close();
    
    cout << endl;
    system("pause");
}
Yandex
Объявления
29.05.2013, 21:03     Очистить файл
Ответ Создать тему
Опции темы

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