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

как в с++ создается типизированный файл? и как вообще понять типизированный? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 15:57     как в с++ создается типизированный файл? и как вообще понять типизированный? #1
вопрос в теме
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 15:57     как в с++ создается типизированный файл? и как вообще понять типизированный?
Посмотрите здесь:

что такое типизированный файл? C++
C++ Сохранение матриц больших размеров в типизированный файл
C++ Сформировать типизированный файл
Типизированный файл. Сведения о студентах. Стипендия C++
Бинарное дерево в типизированный файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:02     как в с++ создается типизированный файл? и как вообще понять типизированный? #2
Предположительно "типизированный файл" - это файл, имеющий определённый формат. Форматы файлов определённых типов описаны в спецификации этих типов. Алгоритм чтения/записи зависит от формата.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:05  [ТС]     как в с++ создается типизированный файл? и как вообще понять типизированный? #3
а есть способ считываения файла в независимости от того какой у него формат? допустим двоичным способом? или бинарным кажется так называется
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:07     как в с++ создается типизированный файл? и как вообще понять типизированный? #4
Если вам не нужна информация, хранящаяся в этом файле - то можно. В бинарном режиме открываете, и вперёд. А если нужна, то придётся разбираться в том, как она структурирована.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:19  [ТС]     как в с++ создается типизированный файл? и как вообще понять типизированный? #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
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
using namespace std;
    char bufRus[256];
    char* Rus(const char* text)
    {
        CharToOem(text, bufRus);
    return bufRus;
    }
 
struct lfile{
    char name[15];
    char data[10];
    int upd;
};
struct sp{
    lfile elfile;   // поле данных
    sp *next;   // указатель
};
 
sp*print_list(sp *list);//прототип функции вывод на экран
 
 
sp* ft_enter();//прототип функции ввод из текстового файла
sp* fb_enter();// прототип функции ввод из типизированного файла
sp* fs_enter();// прототип функции ввод с экрана
sp* sort(sp *list);// прототип сортировки
void search(sp *list); // прототип функций поиск по имени и вывод в файл
void fsearch(sp *list); //прототип функции поиск файла с наибольшим количеством обращений
 //
sp* pind(sp *list); //прототип получения адреса
sp* del(sp *list,sp *adr);// прототип функции удаления файла
sp * vst(sp *list,sp *adr);// прототип фунции вставка файла
void zmn(sp *list); // прототип функции замена файла
 
void main()
{
   int v;
   sp *k;
   do{
      cout<<Rus("  0: формирование списка из текстового файла")<<endl;
      cout<<Rus("  1: формирование списка из типизированного файла")<<endl;
      cout<<Rus("  2: формирование списка с экрана")<<endl;
      cout<<Rus("  3: сортировка")<<endl;
      cout<<Rus("  4: поиск по заданному полю с сохранением результатов в файле")<<endl;
      cout<<Rus("  5: выборка файла с наибольшим количеством обращений")<<endl;
      cout<<Rus("  6: замена записи")<<endl;
      cout<<Rus("  7: удаление записи после указанного адреса")<<endl;
      cout<<Rus("  8: вставка записи после указанного адреса")<<endl;
      cout<<Rus("  9: вывод списка")<<endl;
      cout<<Rus("  10: выход")<<endl;
      cout<<Rus("вариант ")<<endl;
      cin>>v;
      switch(v){
        case 0: k = ft_enter(); break;/*вызов функции ввод тектового файла в переменную к, чтоб по ней потом можно было делать сортировку, поиск и тд*/
        case 1: k = fb_enter(); break; // вызов функции ввод с типизированного файла
        case 2: k = fs_enter(); break;// вызов функции ввод с экрана
        case 3: k = sort(k); print_list(k); break;// вызов 2 функций сортировки по переменной к, и вывод списка на экран
        case 4: search(k);break;//вызов функции поиск по переменной к и сохранение в файл одной строки
        case 5: fsearch(k); break;//вызов функции поиск файла с наибольшим количеством обращений к нему
        case 6: zmn(k); print_list(k); break;//вызов функции замена строки по указаному номеру
        case 7: k = del(k,pind(k)); print_list(k); break;// вызов функции удаление строки после указанного номера
        case 8: k = vst(k,pind(k)); print_list(k); break;//вызов функции вставка строки после указанного номера
        case 9: print_list(k);break;//вызов функции вывод списка на экран
        case 10:return; break;
 
        }
    } while(true);//цикл будет повтрятся
}
 
//ввод списка из текстового файла
sp* ft_enter(){
    char name[10];// символьный тип которое будет именем файла и его типом не больше 10знаков
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;// ввод имени и типа
    sp* list = new sp;    //создаем указатель на голову списка
    sp *ptr;  //указатель на элемент списка
    bool on=true; //флажок, который определяет, читаем ли мы первый элемент списка или последующие
    ifstream inf(name);//считывание файла по имени name в inf
    while (!inf.eof()){ // цикл пока не будет достигнут конец файла
        if(on){     //если до этого список был пуст, то
            ptr=list;  //записываем в него первый элемент
            on=false;
        }else{  //если список не пуст, то записываем в него текущий элемент (настраиваем указатель на след. элемент)
            ptr->next=new sp; //выделяем память под следующий элемент списка
            ptr=ptr->next;//ptr теперь указывает на тот элемент который был выделен строкой выше
        }
        inf>> ptr->elfile.name;   //читаем конкретные данные в текущий элемент списка
        inf>> ptr->elfile.data;
        inf>> ptr->elfile.upd;
        inf.ignore();
    }
    ptr->next=NULL; //для последнего элемента списка указатель на следующий элемент не определен/пуст (установлен в NULL)
    inf.close();//закрытие файла
    return list;  //  возвращаем указатель на первый элемент списка
}
 
//ввод списка из типизированного файла
sp* fb_enter(){
    sp* list =new sp; //создаем указатель на голову списка
    sp *ptr,*q;//два указателя на sp.
    int ok=1;//Переменная ok со значением 1.
    char name[15];// символьный тип которое будет именем файла и его типом не больше 15знаков
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;// ввод имени и типа
    ifstream intf(name, ios::binary); //режим бинарного открытия файла
    ptr=list; //теперь ptr указывает туда же куда и list
    while (!intf.eof()){  // // цикл пока не будет достигнут конец файла
        intf.read(reinterpret_cast<char *>(&ptr->elfile),sizeof(lfile)); /*читаем из бинарного файла байты кол-вом размер структуры lfile в переменную. reinterpret_cast<T> - небезопасное преобразование. В данном случае т.к. read принимает указатель на char* преобразовываем указатель на lfile в указатель на char и читаем в него. */
            if(ptr->elfile.upd != NULL){  // если не ноль
                q=ptr;//q теперь указывает туда же куда и ptr.
                ptr->next=new sp;//ptr теперь указывает на тот элемент который был выделен строкой выше
                ptr=ptr->next;// ptr теперь указывает на тот элемент который был выделен строкой выше
            }
    }
    ptr->next=NULL;//обнуляем следующий элемент за q.
    intf.close();//закрытие файла
    return list; // возвращаем указатель на первый элемент списка
}
Bers
Заблокирован
02.11.2011, 16:22     как в с++ создается типизированный файл? и как вообще понять типизированный? #6
Цитата Сообщение от lexflax Посмотреть сообщение
а есть способ считываения файла в независимости от того какой у него формат? допустим двоичным способом? или бинарным кажется так называется
Есть ещё такая штучка XML
Применяется в случаях, когда получатели данных должны суметь прочитать данные, но точно не известна структура этих данных.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:24     как в с++ создается типизированный файл? и как вообще понять типизированный? #7
Записывайте и считывайте значения каждого из элементов вашего списка. Можно внаглую:

15 байт для name, 10 байт для data, 4 байта для int upd, 15 байт для name, 10 байт для data, 4 байта для int upd, 15 байт для name, 10 байт для data, 4 байта для int upd...

Можно записывать только информативную часть строки, до нуль-терминатора, и сам нуль-терминатор. Тогда файл может стать меньше в размере. В общем, это уже как посчитаете нужным

Добавлено через 34 секунды
Да, Bers прав. Есть XML, но в вашем случае он не имеет смысла.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:31  [ТС]     как в с++ создается типизированный файл? и как вообще понять типизированный? #8
Цитата Сообщение от talis Посмотреть сообщение
Записывайте и считывайте значения каждого из элементов вашего списка. Можно внаглую:
15 байт для name, 10 байт для data, 4 байта для int upd, 15 байт для name, 10 байт для data, 4 байта для int upd, 15 байт для name, 10 байт для data, 4 байта для int upd...
Можно записывать только информативную часть строки, до нуль-терминатора, и сам нуль-терминатор. Тогда файл может стать меньше в размере. В общем, это уже как посчитаете нужным
словесно я это понимаю я не знаю как это программно реализовать на самом языке написать

Добавлено через 4 минуты
Цитата Сообщение от lexflax Посмотреть сообщение
sp* fb_enter(){
sp* list =new sp; //создаем указатель на голову списка
sp *ptr,*q;//два указателя на sp.
int ok=1;//Переменная ok со значением 1.
char name[15];// символьный тип которое будет именем файла и его типом не больше 15знаков
cout<<Rus("введи имя входн тип.файла")<<endl;
cin>>name;// ввод имени и типа
ifstream intf(name, ios::binary);
после строки cin>>name; добавить строку ofstream intf(name, ios::binary);
ну а как ввод потом осуществить в моем случае?
Bers
Заблокирован
02.11.2011, 16:31     как в с++ создается типизированный файл? и как вообще понять типизированный? #9
Цитата Сообщение от lexflax Посмотреть сообщение
словесно я это понимаю я не знаю как это программно реализовать на самом языке написать
Прежде, чем пытаться создавать "типизированные файлы", вам нужно научиться, как вообще записывать/считывать данные из файлов.

Сначала научитесь, как записать/считать в файл одиночные переменные.
Потом научитесь, как записать/считать в файл структуру целиком.

Потом научитесь, как записывать/считывать в файл несколько штук разнотипных структур

И только потом уже можно будит думать о том, как создавать формат файла заточенного под конкретную задачу.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:36  [ТС]     как в с++ создается типизированный файл? и как вообще понять типизированный? #10
Цитата Сообщение от Bers Посмотреть сообщение
Прежде, чем пытаться создавать "типизированные файлы", вам нужно научиться, как вообще записывать/считывать данные из файлов.
да у меня времени нету на это, не хватает на само обучение и работать как то не хватает сил и времени, вот давно писал листинг по считываю текстового файла а в контрольной не знаю как видо изменить этот листинг
C++
1
2
3
4
5
6
7
8
9
10
11
using namespace std;
    string st,;
    cout << "enter name files:" <<endl;
    char name[10];
    cin >> name;
    ifstream inf(name);
    int i=0;
    while (!inf.eof())
    {getline (inf,st);
    cout << st <<"\n";
    getch (); }  }
Bers
Заблокирован
02.11.2011, 16:42     как в с++ создается типизированный файл? и как вообще понять типизированный? #11
Цитата Сообщение от lexflax Посмотреть сообщение
да у меня времени нету на это, не хватает на само обучение и работать как то не хватает сил и времени
Добрый дядя сможет за вас создавать вам "типизированный файл", что бы вы получили зачет.
А вот объяснить вам, как он изготавливается, он не сможет. Потому что вы не знаете основ.
Нельзя научить человека бегать, если он ещё не умеет ходить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 16:47     как в с++ создается типизированный файл? и как вообще понять типизированный?
Еще ссылки по теме:

не типизированный файл C++
C++ Создание и запись в типизированный файл
C++ Типизированный файл

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

Или воспользуйтесь поиском по форуму:
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:47  [ТС]     как в с++ создается типизированный файл? и как вообще понять типизированный? #12
к чему эти умные слова, завтра поеду на сдачу все равно сдам, а с типизированным вводом выводом все равно разберуся , просто за то время которое дается выучиться все я нахожу самый быстрый способ это на примерах я не очник , и не заочник который целыми днями отдыхает дома и может себя посветить учебе к сожалению, если бы я понимал отлично в с++ то помог бы человек с удовольствием, что и буду в будущем делать, потому что понимаю к некоторым тяжело это дается
Yandex
Объявления
02.11.2011, 16:47     как в с++ создается типизированный файл? и как вообще понять типизированный?
Ответ Создать тему
Опции темы

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