Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
#1

Правильно ли я записываю/ считываю ( принцип вроде да а реализовано УГ) - C++

30.05.2014, 21:32. Просмотров 228. Ответов 3
Метки нет (Все метки)

В общем дан односвязный список
помогите найти косяк
сама структура
C++
1
2
3
4
5
6
7
8
9
struct WORKER
    {
      char name[100], family[100] , dolzhnost[100] ;
      int year;
      WORKER *next ;
    };
    WORKER *head = 0 ;
    WORKER *curr = 0 ;
    WORKER tit ;
я понимаю так
чтобы записать в файл нужно
1) создать структуру скопировать в неё текущий элемент и записать его в файл и так до конца списка
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::ofstream out("lab.txt", std::ios_base::out );
    curr = head;
    while( curr -> next != 0 )
    {
        strcpy( tit.name , curr -> name ) ;
        strcpy( tit.family , curr -> family ) ;
        strcpy( tit.dolzhnost , curr -> dolzhnost ) ;
        tit.year = curr -> year ;
        out.write( (char*)&tit , sizeof( WORKER ) );
        curr = curr -> next ;
    };
    out.close() ;
2) для считывания сделать наоборот




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
char file[100];
            std::cout << "\nВведите имя файла" << std::endl ;
            std::cin >> file;
            std::ifstream in( file , std::ios_base::in );
            if ( !in.is_open() )
                {
                    std::cout << "Файл не может быть открыт или создан\n" << std::endl ;
                    return 1 ;
                }
            curr = head ;
            while( !in.eof() )
            {
                if ( head == 0 )
                {
                    head = new WORKER ;
                    curr = head ;
                }
                else
                {
                    curr -> next = new WORKER ;
                    curr = curr -> next ;
                }
                in.read( ( char* )&tit , sizeof( WORKER ) ) ;
                //////////////так считает 1 элемент и выведет на экран/////////////
                std::cout << tit.name << std::endl ;
                std::cout << tit.family << std::endl ;
                std::cout << tit.dolzhnost << std::endl ;
                std::cout << tit.year << std::endl ;
                ////////////////////////////не копирует в структуру///////////////
                strncpy( curr -> name , tit.name , 30 ) ;
                strncpy( curr -> family , tit.family ,30 ) ;
                strncpy( curr -> dolzhnost , tit.dolzhnost , 30 ) ;
                curr -> year = tit.year ;
                //////////////////////////////////////////////////////////////////
                curr = curr -> next ;
            };
        in.close();
        curr -> next = 0 ;


yj
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2014, 21:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли я записываю/ считываю ( принцип вроде да а реализовано УГ) (C++):

Правильно ли считываю матрицу? - C++
Ребят, правильно ли я считываю матрицу из файла? И еще: чтобы узнать размер матрицы, мне обязательно нужно открыть файл и, посмотрев ее...

Правильно ли реализовано вычисление членов последовательности - C++
void SUR(double **a,int n,double w,double *f,double *x_app) { //------------------------------------------- double * fut = new...

Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? - C++
я ведь правильно определил удаление элемента из массива и совершил вызов деструктора? class ECM { ..... } ECM *pECM; .... ...

Правильно ли в приведенном примере реализовано выделение и очищение памяти под двумерный вектор - C++
Скажите правильно ли я выделяю и очищаю память под двухмерный вектор class A { private: std::vector&lt; std::vector&lt;int&gt; &gt;* ...

Ошибки вроде бы нет, но работает не правильно! - C++
Христос Воскресе! Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; using namespace std;...

Прога на Си, все правильно вроде, но выскакивает - C++
Проверьте, пожалуйста, вроде задержку сделала, но выскакивает почему-то не считает результат... #include &lt;vcl.h&gt; #include &lt;conio.h&gt; ...

3
kylroma
Одессит
204 / 75 / 23
Регистрация: 30.12.2013
Сообщений: 276
Записей в блоге: 1
Завершенные тесты: 2
30.05.2014, 22:49 #2
Если структуру записывать в текстовый файл, то выходит коряво. Обычно ей записывают в бинарный файл. Структура будет храниться как единое целое. И короче код.
1
Jewbacabra
Эксперт PHP
2656 / 2243 / 844
Регистрация: 24.04.2014
Сообщений: 6,744
30.05.2014, 23:05 #3
evelolka, а зачем на одной итерации два раза делать curr = curr->next; ?
1
evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
31.05.2014, 11:46  [ТС] #4
всё спасибо понял косяк)

вот так надо было)
C++
1
2
3
4
5
6
in.read( ( char* )&tit , sizeof( WORKER ) ) ;
                strncpy( curr -> name , tit.name , 100 ) ;
                strncpy( curr -> family , tit.family , 100 ) ;
                strncpy( curr -> dolzhnost , tit.dolzhnost , 100 ) ;
                curr -> year = tit.year ;
                curr -> next = 0 ;
прост сразу не понял про какой говорилось)
0
31.05.2014, 11:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 11:46
Привет! Вот еще темы с ответами:

Не правильно записываю условие - PHP
Здравствуйте, есть отрезок кода //берём первые 10 букв от имени файла $file_name =substr($file, 0, 10); echo $file_name; if...

Правильно ли реализовано? - Oracle
ЗАДАНИЕ : Информационная система Вуза. Студенты, организованные в группы, учатся на одном из факультетов, возглавляемом деканатом, в...

Правильно ли реализовано вычисление функции? - Turbo Pascal
Помогите, пожалуйста Само задание во вложениях указано ниже. var F,x,S,eps:real; n:integer; begin write('vvedite...

как правильно должно быть реализовано ЧПУ - PHP
Всем привет. Один мой знакомый разработчик и я уже некоторое врем я спорим как же правильно должно быть реализовано ЧПУ. Я говорю что...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru