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

Удалить структуру из файла. - C++

Восстановить пароль Регистрация
 
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
09.03.2011, 23:13     Удалить структуру из файла. #1
Хочю зделать так чтоб при вводе слова оно сравнивалась с частью структуры books.title и удалялас структура в которой есть такой books.title получается записываем все не равные ему в новый файл и затем старый удалялся а новый пере именововается в старый как примерно это сделать я представляю но тока представляю.

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
FILE *b_Lib, *temp;
    
    b_Lib = fopen("baza_knig.dat","rb");
    temp= fopen("temp.dat","wb");
 
    fseek(b_Lib,0,SEEK_END);
    int fsize=ftell(b_Lib);
 
    int e=fsize/sizeof(book);
    book* books2=new book[e];
    fseek(b_Lib,0,SEEK_SET);
    fread(books2,sizeof(book),e,b_Lib);
    char slovo[255];
    cin.get();
    cin.getline(slovo,255);
    for(int i = 0; i < e; i++)
    {
        if(books2[i].title != slovo)
        {
            fwrite(books2[e],sizeof(book),e,temp);
        }
    }
 
    
fclose (b_Lib);
    fclose (temp);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 23:13     Удалить структуру из файла.
Посмотрите здесь:

Читать структуру из файла C++
C++ Считать структуру из файла
Считать структуру из файла C++
C++ Из файла в структуру
Потоком из файла в структуру C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.03.2011, 05:25     Удалить структуру из файла. #2
strcmp()
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
10.03.2011, 08:13  [ТС]     Удалить структуру из файла. #3
Сравнения я исправил а как мне теперь стереть главный файл из которого я всё записал во временный и временный переименовать в главный ?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.03.2011, 10:25     Удалить структуру из файла. #4
надо закрыть файлы и применить remove() + rename()
есть ещё функция tmpfile()
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
10.03.2011, 15:09  [ТС]     Удалить структуру из файла. #5
Сделал так но тот фор не так отбирает наверна вопшем не работает так как хотел.


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
 FILE *b_Lib, *temp;
    
    b_Lib = fopen("baza_knig.dat","rb");
    temp= fopen("temp.dat","wb");
 
    fseek(b_Lib,0,SEEK_END);
    int fsize=ftell(b_Lib);
 
    int e=fsize/sizeof(book);
    book* books2=new book[e];
    fseek(b_Lib,0,SEEK_SET);
    fread(books2,sizeof(book),e,b_Lib);
    char slovo[255];
    cin.get();
    cin.getline(slovo,255);
    for(int i = 0; i < e; i++)
    {
        if((strcmp(books2[i].title , slovo) == 1))
        {
            fwrite(books2[i],sizeof(book),e,temp);
        }
    }
    
fclose (b_Lib);
    fclose (temp);
 remove("baza_knig.dat");
  char oldname[] ="temp.dat";
  char newname[] ="baza_knig.dat";
  rename( oldname , newname );
 
    
 
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2011, 03:28     Удалить структуру из файла. #6
C++
1
if((strcmp(books2[i].title , slovo) == 1))
если тебе надо title != slovo
C++
1
if(strcmp(books2[i].title , slovo) != 0)
C++
1
fwrite(books2[i],sizeof(book),e,temp);
C++
1
fwrite(&books2[i], sizeof(book), e, temp);
количество e не подходит для смещений, нужно от e что-то отнимать
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
11.03.2011, 12:50  [ТС]     Удалить структуру из файла. #7
А можно покозать как это сделать ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2011, 05:21     Удалить структуру из файла.
Еще ссылки по теме:

C++ Чтение файла в структуру
C++ из файла в структуру
Чтение файла в структуру C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.03.2011, 05:21     Удалить структуру из файла. #8
находишь структуру и тебе надо от общего числа структур отнять число структур до найденной
это число и передавать в fwrite()
Yandex
Объявления
12.03.2011, 05:21     Удалить структуру из файла.
Ответ Создать тему
Опции темы

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