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

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

Восстановить пароль Регистрация
 
o33ik
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
29.05.2013, 19:46     Очистить файл #1
Как через класы потоков очистить открытый файл? 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++ Очистить экран
C++ Очистить поток от EOF
Очистить файл C++
Очистить текстовый файл C++
Как очистить экран? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
 Аватар для 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, перед тем как ввести информацию мне надо файл очистить.
alsav22
5282 / 4801 / 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     Очистить файл
Ответ Создать тему
Опции темы

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