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

прокоментировать функцию "ввод из типизированного файла" - C++

Восстановить пароль Регистрация
 
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
25.10.2011, 14:25     прокоментировать функцию "ввод из типизированного файла" #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
# include <iostream>    // заголовочный файл/библиотека для работы с вводом-выводом
# include <windows.h>         // для функции       CharToOem();
# include <fstream>             // для работы с файлом
# include <string>                // для работы со строками
using namespace std;
        char bufRus[256];
        char* Rus(const char* text)
        {
                CharToOem(text, bufRus);
        return bufRus;
        }
 
struct lfile{                   // эта структура описывает данные, которые будут хранится в списке 
        char name[15];     //в данном случае данные состоят из 2-х полей-массивов char (строки)
        char data[10];      //и одного целочисленного поля
        int upd;
};
struct sp{           //эта структура описывает 1 элемент (узел) списка. Каждый узел состоит из:
        lfile elfile;   // данных (их структура выше)
        sp *next;   // и указателя на следующий элемент списка
};
 
void print_list(sp *list);// это прототипы функций
void fb_output(sp *list);
sp* fromtipf();// эта функция возвращает указатель на элемент списка (sp* - тип ее возвращаемого значения, void тут не нужен)
sp* ft_enter(); //аналогично
sp* fb_enter();
sp* fs_enter();
sp* sort(sp *list);
void search(sp *list);
void fsearch(sp *list);
sp* ddf(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; //объявлен указатель на начальный элемент (голову) списка
        while(1){
          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("вариант ")<<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;
                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:return; break;
                }
        }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sp* fb_enter(){//ввод списка из типизированного файла
        sp* list =new sp; //создаем указатель на голову списка
        sp *ptr,*q;//
        int ok=1;//
        char name[15];
        cout<<Rus("введи имя входн тип.файла")<<endl;
        cin>>name;
        ifstream intf(name, ios::binary);//что такое тут ios::binary?
        ptr=list;//
        while (!intf.eof()){
                intf.read(reinterpret_cast<char *>(&ptr->elfile),sizeof(lfile));// вот эту если можно подробней
                        if(ptr->elfile.upd != NULL){//
                                q=ptr;//
                                ptr->next=new sp;//
                                ptr=ptr->next;//
                        }
        }
        q->next=NULL;//
        intf.close();
        return list;
}
Добавлено через 22 часа 49 минут
Help me? ну помогите люди очень важно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 14:25     прокоментировать функцию "ввод из типизированного файла"
Посмотрите здесь:

Переделать ввод / вывод с "C++" на "С" C++
C++ Как заменить функцию printf из "С" в "С++"?
Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) C++
C++ Считать с файла информацию о команде "Название" "Город", количество побед, поражений, ничьих, забитых и пропущенных мячей
C++ Написать функцию выбора пунктов меню стрелками "вверх" "вниз"
Структура "Человек". Блочный ввод-вывод / С++ для начинающих C++
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++
Переписать в файл О все элементы файла К с заменой в них символа "0" на символ "1" и наоборот C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.10.2011, 14:55     прокоментировать функцию "ввод из типизированного файла" #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sp* fb_enter(){//ввод списка из типизированного файла
        sp* list =new sp; //создаем указатель на голову списка
        sp *ptr,*q;//два указателя на sp.
        int ok=1;//Переменная ok со значением 1.
        char name[15];
        cout<<Rus("введи имя входн тип.файла")<<endl;
        cin>>name;
        ifstream intf(name, ios::binary);//что такое тут 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){// Не слишком корректно. Лучше использовать просто 0.
                                q=ptr;//q теперь указывает туда же куда и ptr.
                                ptr->next=new sp;//выделяем память под следующий элемент списка
                                ptr=ptr->next;//ptr теперь указывает на тот элемент который был выделен строкой выше
                        }
        }
        q->next=NULL;//обнуляем следующий элемент за q.
        intf.close();
        return list;
}
Yandex
Объявления
25.10.2011, 14:55     прокоментировать функцию "ввод из типизированного файла"
Ответ Создать тему
Опции темы

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