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

Создать бинарный файл - C++

Восстановить пароль Регистрация
 
Rika23
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 6
08.12.2012, 19:31     Создать бинарный файл #1
Здравствуйте, делаю лабораторную работу, вроде код написала, но он почему-то пропускает запись названия термина. Помогите пожалуйста. Вот условие и код:
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
#include <iostream>
using namespace std;
 
struct Term
{
    char name[80];
    char flag;
    
    int page;
} p,p1;
 
 
FILE *f1,*f2;
 
 
void CreateFile(char *filename)
{
    if ((f1=fopen(filename,"wb")) != NULL)
    {
        int cnt=1;
        while(cnt!=0)
        {
            
 
            
            cout << "Enter term(* - end) >";
            cin.getline(p.name,80);
            if (strcmp(p.name,"*")==0)
                                  cnt=0;
            cout << "Enter flag >";
            cin >>p.flag;
            cin.get();
            cout << "Enter page>";
            cin >> p.page;
            
 
 
 
            fwrite(&p, sizeof p1, 1, f1);
        }
        fclose(f1);
    }
}
char* generateFileName(char *str)
{
    char* w;
    char* str1=new char[20];
    strcpy(str1,str);
    w=strtok(str1,".");
    strcat(w,".txt");
    return w;
}
 
void CreateTextFile(char *filename1,char *filename2)
{
    if ((f1=fopen(filename1,"w")) != NULL)
    {
        if ((f2=fopen(filename2,"rb")) != NULL)
        {
        
        while(!feof(f2))
        {
            fread(&p1, sizeof p1, 1, f2);
                        
            fwrite(&p1, sizeof p1, 1, f1);
            fputs(" \n",f1);
 
        }
        fclose(f1);
        fclose(f2);
    
        
        }
    }
}
 
 
void main(int argc, char* argv[])
{
    
        cout<<"CreateFile "<<argv[1]<<endl<<endl;
        CreateFile(argv[1]);
        cout<<"Add file "<<argv[2]<<endl<<endl;
        CreateFile(argv[2]);
                CreateTextFile(generateFileName(argv[1]),argv[1]);
 
}
Кликните здесь для просмотра всего текста
Создать бинарный файл, содержащий сведения о терминах, определяемых и используемых в книге

Код
Номер поля Название	                                                      Тип, размер
      1	         Название термина	                                           char[80], 80 байт
      2	         Признак определения (1) или использования (2)	                char, 1 байт
      3	         Номер страницы	                                                int, 4 байта
	                                                                           итого 85 (!) байт
Записи файла должны быть упорядочены по полям «Название термина» и «номер страницы». Кроме того, создать файл добавлений, имеющий такую же структуру.
Имена создаваемых файлов задаются в командной строке
Напишите программу, которая может выполнять следующие функции:
1. Вывести содержимое исходного файла в текстовый файл в виде, удобном для чтения человеком (т.е. с необходимыми комментариями). Имя выходного текстового файла генерировать из имени исходного файла с добавлением типа *.txt

2. Выполнить слияние основного файла и файла добавлений в новый выходной файл, сохраняя его упорядоченность. Имя выходного файла запросить у пользователя

3. Вывести содержимое полученного файла в текстовый файл в виде, удобном для чтения человеком (т.е. с необходимыми комментариями). Имя выходного текстового файла генерировать из имени исходного файла из п.2 с добавлением типа *.txt
Замечания.
1) Решение задачи должно сопровождаться подробным интерфейсом .

2) При выполнении задания при обработке бинарных файлов использовать только файлы в стиле С. Использовать потоковые файлы разрешается для создания текстовых файлов

3) Слияние (п.2) выполнять на уровне файлов. Решение с использованием массивов или стандартных контейнеров приниматься не будет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 19:31     Создать бинарный файл
Посмотрите здесь:

бинарный файл C++
C++ Бинарный файл
Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой C++
Создать бинарный файл f и записать в него целые числа C++
Бинарный файл C++
Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. C++
C++ Бинарный файл
C++ Создать бинарный файл, внутри которого можно производить удаление и обновление инфомрации, а также добавление

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
09.12.2012, 11:07     Создать бинарный файл #2
Честно говоря, не особо вник) Беглым взглядом, думаю, нужно очистить поток cin перед повторным использованием функции getline():
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
void CreateFile(char *filename)
{
    if ((f1=fopen(filename,"wb")) != NULL)
    {
        int cnt=1;
        while(cnt!=0)
        {
            
 
            
            cout << "Enter term(* - end) >";
            cin.getline(p.name,80);
            if (strcmp(p.name,"*")==0)
                                  cnt=0;
            cout << "Enter flag >";
            cin >>p.flag;
            cin.get();
            cout << "Enter page>";
            cin >> p.page;
            
 
 
 
            fwrite(&p, sizeof p1, 1, f1);
 
             cin.sync();  //попробуйте сделать вот так
        }
        fclose(f1);
    }
}
Rika23
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 6
09.12.2012, 15:13  [ТС]     Создать бинарный файл #3
Все равно термин пропускает
Yandex
Объявления
09.12.2012, 15:13     Создать бинарный файл
Ответ Создать тему
Опции темы

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