Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

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

02.11.2011, 15:57. Показов 7265. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вопрос в теме
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2011, 15:57
Ответы с готовыми решениями:

Как создать типизированный файл int?
Как создать файл int?

Типизированный файл
С чего начать и что почитать?

не типизированный файл
Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой в них символа 0 на 1 и наоборот. также решить в терминах...

11
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:02
Предположительно "типизированный файл" - это файл, имеющий определённый формат. Форматы файлов определённых типов описаны в спецификации этих типов. Алгоритм чтения/записи зависит от формата.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
02.11.2011, 16:05  [ТС]
а есть способ считываения файла в независимости от того какой у него формат? допустим двоичным способом? или бинарным кажется так называется
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:07
Если вам не нужна информация, хранящаяся в этом файле - то можно. В бинарном режиме открываете, и вперёд. А если нужна, то придётся разбираться в том, как она структурирована.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
02.11.2011, 16:19  [ТС]
Блин вот немного понять не могу, вот листинг проги до функции считывания типизированого файла, там я сам должен ввести имя и тип файла для открытия, я вот не знаю как написать программу самую простую для создания этого типизированного файла, чтоб вот этой функцие можно было его открыть
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; // возвращаем указатель на первый элемент списка
}
0
Заблокирован
02.11.2011, 16:22
Цитата Сообщение от lexflax Посмотреть сообщение
а есть способ считываения файла в независимости от того какой у него формат? допустим двоичным способом? или бинарным кажется так называется
Есть ещё такая штучка XML
Применяется в случаях, когда получатели данных должны суметь прочитать данные, но точно не известна структура этих данных.
1
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
02.11.2011, 16:24
Записывайте и считывайте значения каждого из элементов вашего списка. Можно внаглую:

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

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

Добавлено через 34 секунды
Да, Bers прав. Есть XML, но в вашем случае он не имеет смысла.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
02.11.2011, 16:31  [ТС]
Цитата Сообщение от 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);
ну а как ввод потом осуществить в моем случае?
0
Заблокирован
02.11.2011, 16:31
Цитата Сообщение от lexflax Посмотреть сообщение
словесно я это понимаю я не знаю как это программно реализовать на самом языке написать
Прежде, чем пытаться создавать "типизированные файлы", вам нужно научиться, как вообще записывать/считывать данные из файлов.

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

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

И только потом уже можно будит думать о том, как создавать формат файла заточенного под конкретную задачу.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
02.11.2011, 16:36  [ТС]
Цитата Сообщение от 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 (); }  }
0
Заблокирован
02.11.2011, 16:42
Цитата Сообщение от lexflax Посмотреть сообщение
да у меня времени нету на это, не хватает на само обучение и работать как то не хватает сил и времени
Добрый дядя сможет за вас создавать вам "типизированный файл", что бы вы получили зачет.
А вот объяснить вам, как он изготавливается, он не сможет. Потому что вы не знаете основ.
Нельзя научить человека бегать, если он ещё не умеет ходить.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
02.11.2011, 16:47  [ТС]
к чему эти умные слова, завтра поеду на сдачу все равно сдам, а с типизированным вводом выводом все равно разберуся , просто за то время которое дается выучиться все я нахожу самый быстрый способ это на примерах я не очник , и не заочник который целыми днями отдыхает дома и может себя посветить учебе к сожалению, если бы я понимал отлично в с++ то помог бы человек с удовольствием, что и буду в будущем делать, потому что понимаю к некоторым тяжело это дается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2011, 16:47
Помогаю со студенческими работами здесь

Сформировать типизированный файл
Сформировать типизированный файл, в котором хранится информация о сотрудниках подразделения: ФИО, место рождения, год рождения. На его...

Бинарное дерево в типизированный файл
Задача над которой бьюсь уже третий день. 1. Сделать базу данных клиентов банка на основе бинарного дерева дерева Сделать...

Создание и запись в типизированный файл
Есть 7 окон Edit (ФИО, отдел, должность, эл. почта и т.д.), нужно содержимое этих окон записать в файл, и есть ComboBox, который должен по...

что такое типизированный файл?
что это такое? и как с ним работать? Добавлено через 24 минуты хелп народ... Добавлено через 52 минуты неужели никто не знает?

Типизированный файл. Сведения о студентах. Стипендия
Привет) у меня такая задача на туже тему, помогите исправить Вот условие Сформировать типизированный файл, в котором хранятся...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru