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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Yn94k0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
#1

Ansi c, запись и чтение структуры из файла. Накосячил от души - C++

30.06.2013, 23:36. Просмотров 1345. Ответов 27
Метки нет (Все метки)

Прошу прощения за глупую тему, но я мучаюсь уже долго, сам не могу решить проблему.


структура
C
1
2
3
4
5
6
7
8
9
struct rent
{   
    char name[15];/*<имя клиента*/
    char m_name[20];/*<название арендуемой машины*/
    int rent_per_mounth;/*<рента*/
    int nom;/*<количество месяцев*/
    char number[10];/*<номер машины*/
    int summ;/*<доход компании от клиента*/
};
массив
C
1
2
    rent *mas=NULL;
    mas = (rent *)malloc(sizeof(rent));
запись и чтение
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
#include "type.h"
#include <io.h>
int write(rent *mas,int size)// фукция записи 
{
    FILE *fp = fopen("file.dat","w");//создание файла для записи 
    if(!fp)// проверка на открытие 
        {
            printf("FILE NOT FOUND\n");// ошибка если не открылся 
            return 1;
        }
            fwrite (mas, sizeof(struct rent), 1, fp);
    printf("\t\t\t\tFile was saved\n");//вывод сообщения 
    fclose(fp);// закрытие файла 
    return 0;
}
 
 
 
int read(rent *&mas,int size)//функция чтения 
{
    FILE *fp = fopen("file.dat","r");//открытие файла 
    if(!fp)// проверка открытия 
        {
            printf("FILE NOT FOUND\n");//ошибка 
            return 1;
        }
    while (!feof(fp)) //цикл по чтению
        {
            size++;
            mas = (rent *)realloc(mas, size * sizeof(struct rent));
            fread(&mas[size], sizeof(struct rent), 1, fp);
        }
 
    printf("\t\t\t\tFile was read\n");//вывод сообщения 
    fclose(fp);//закрытие файла 
    return size;
}
При записи в файле появляется странно выглядящая запись, в которой из-за знаков типа р*є
р*є
р*є
р*є!
трудно уловить исходный элемент.
При чтении программа вообще крашится.
Помогите, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2013, 23:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ansi c, запись и чтение структуры из файла. Накосячил от души (C++):

Запись и чтение структуры из файла - C++
Здравствуйте, у меня дано такое задание: Составить программу &quot;Список студентов группы&quot;, в котором указаны - Фамилия,Имя,пол, место...

Запись и чтение структуры с файла - C++
Привет всем.Столкнулся с проблема записи структуры в файл и чтения ее из файла.Вот сама структура: struct papa { vector&lt;string&gt; v;...

Запись и чтение структуры в/из файла - C++
Столкнулся с очередной проблемой. Есть несколько участков кода: Структура &quot;Абонент&quot;: struct Subscriber { char FIO ; ...

Запись структуры и её чтение из файла - C++
пробовал разными способами, ничего не работает, не записывает и не считывает ...

Чтение структуры из файла и запись нового - C++
Из файла вводятся записи структурой имя - стринг, ТК - место работы тоже структура из AS - место (стринг), Tel - телефон с клавиатуры...

Запись/чтение вектора в/из файла.Структуры - C++
Доброе время суток.Проблема заключается в следующем: в файл идет запись вектора (запись вроде-бы успешна,насколько я могу судить).После...

27
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 03:25 #16
По двум функциям сложно судить о логике работы всей программы. Сделать всё можно по-разному. Весь код покажите, тогда что-то смогу сказать.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 03:28 #17
А в бинарном режиме файл открыть? Если уж работаете с байтами. Хотя вряд ли поможет, но мешать все в кучу тоже не есть разумно
0
Yn94k0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
01.07.2013, 03:32  [ТС] #18
очень странно, сейчас попробовал свой старый вариант (тот, что с циклом и реаллоцированием) замутить, с помощью точек останова выяснил, что он как бы правильные значения из файла считывает, но потом удаляет, когда закончивается выполнение функции "read". Удивительно. И size принимает какие-то уж совсем странные значения.

Код:
data.h
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>// ПОдключение библиотек
#include <stdlib.h>
#include <locale.h>
#include <limits.h>
#include <conio.h>
/**@file data.h*/
/*Структура данных "Прокат"*/
#ifndef DATA_H
#define DATA_H
struct rent
{   
    char name[15];/*<имя клиента*/
    char m_name[15];/*<название арендуемой машины*/
    int rent_per_mounth;/*<рента*/
    int nom;/*<количество месяцев*/
    char number[10];/*<номер машины*/
    int summ;/*<доход компании от клиента*/
};
#endif DATA_H
type.h
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
/**@file type.h*/
#include "data.h"
#ifndef TYPE_H//условная компиляций 
#define TYPE_H
//Ввод данных
int enter(rent *&mas, int size);
/**ref Enter_show.cpp*/
//Вывод данных
int show(rent *&mas,int size);
/**ref Enter_show.cpp*/
//Чтение из файла 
int read(rent *&mas,int size);
/**ref read_write.cpp*/
//Запись в файл
int write(rent *mas,int size);
/**ref read_write.cpp*/
//Удаление данных
int delet(rent *&mas,int size);
/**ref delet_proc.cpp*/
//Комплект меню
int menu1();
/**ref menu.cpp*/
//Меню выбора сортировок
int menu_sort(rent *&mas,int size);
/**ref menu.cpp*/
//Функция поиска даных
int find(rent *mas,int size);
/**ref delet_proc.cpp*/
//Сортировка пузырька
void sort_puz(rent *&mas,int size);
/**ref sort.cpp*/
//Сортировка шелла
void sort_shell(rent *&mas,int size);
/**ref sort.cpp*/
// Быстрая Сортировка
void quick_sort(rent *&mas,int first, int end);
/**ref sort.cpp*/
//Основная программа 
void programm();
/**ref display.cpp*/
#endif TYPE_H
файл исходного кода main.cpp
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
#include "type.h"
void main()
{
    int size=0;
    bool key = false;
    rent *mas=NULL;
    mas = (rent *)malloc(sizeof(rent));
    do
    {
        system("cls");//очистака экрана
        menu1();//вывод меню
        switch(_getch())
            {
                case '\x5':system("cls");
                size = enter(mas, size);
                break;//выбор Пункта меню 
                
                case '\x16':system("cls");
                show(mas,size);
                _getch();break;
 
                case '\x13':system("cls");
                write(mas,size);
                _getch();break;
 
                case '\x12':system("cls");
                read(mas,size);
                _getch();break;
 
                case '\x4':system("cls");
                size = delet(mas,size);
                _getch();break;
 
                case '\x6':system("cls");
                find(mas,size);
                _getch();break;
 
                case '\f':system("cls");
                menu_sort(mas,size);
                _getch();break;
 
                case '\x11':system("cls");key = true ;break;
            }
    }while(key!= true);
}
ресурсы:
search_del
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
#include "type.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int delet(rent *&mas,int size)//функция удаления 
{
    int number;
    printf("Enter number of record\n");
    scanf("%d", &number);
    for (int i = number; i < size; i++)
    {
            mas[i-1]=mas[i];//удаление 
            strcpy(mas[i].name, " ");
            strcpy(mas[i].m_name, " ");
            strcpy(mas[i].number, " ");
            mas[i].rent_per_mounth=0;
            mas[i].nom=0;
            mas[i].summ=0;
        }
    size--;//уменьшение размерности
    return size;//возврат значения 
}
int find(rent *mas,int size)//функция поиска 
{
    char S[60]; 
    printf("Enter client`s name for search : ");
    gets(S);
    for(int i=0;i<size;i++)//цикл поиска
        {
            if(strcmp(S, mas[i].name)==0)//условие поиска 
                {
                    printf("\tName\t\tMachine`s name  Per mouth  Duration\tNumber  Summ\n\n");//шапка таблицы 
                    printf("%16s",mas[i].name);
                    printf("%16s\t  ",mas[i].m_name);
                    printf("%d\t",mas[i].rent_per_mounth);
                    printf("%d\t",mas[i].nom);
                    printf("%7s  ",mas[i].number);
                    printf("%d\n",mas[i].summ);
                    return 0;//удачное завершение 
                }
    else
    {
    printf("\t\t\t\tThere`s no enties\n");//вывод сообщение 
    return 1;//ошибочное завршение 
    }
        }
}
enter_show
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
#include "type.h"
 
int enter(rent *&mas, int size)//функция ввода 
{
    int hm=0;
    printf("Enter number of client : ");
    scanf("%d",&hm);//ввод кол - во записей
    _flushall();//очистка буфера ввода
 
    size=size+hm;
    mas = (rent *)realloc(mas, size * sizeof(struct rent));
 
    for(int i=(size-hm);i<(size);i++)//цикл по вводу 
        {
            system("cls");
            printf("Enter name of client:");
            gets(mas[i].name);
            _flushall();
            printf("Enter name of machine:");
            gets(mas[i].m_name);
            _flushall();
            printf("Enter rent per mounth:");
            scanf("%d",&mas[i].rent_per_mounth);
            _flushall();
            printf("Enter number of mounth:");
            scanf("%d",&mas[i].nom);
            _flushall();
            printf("Enter number of machine:");
            gets(mas[i].number);
            mas[i].summ = mas[i].nom  * mas[i].rent_per_mounth;
        }
    return size;//возврат значения 
}
int show(rent*&mas,int size)//функция вывода 
{
    printf("\tName\t\tMachine`s name  Per mouth  Duration\tNumber  Summ\n\n");//шапка таблицы 
    for (int i=0;i<size;i++)
        {   
            printf("%16s",mas[i].name);
            printf("%16s\t  ",mas[i].m_name);
            printf("%d\t",mas[i].rent_per_mounth);
            printf("%d\t",mas[i].nom);
            printf("%7s  ",mas[i].number);
            printf("%d\n",mas[i].summ);
        }
    printf("\n\n");
    return 0;
}
menu
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
#include "type.h"
//Реализация функций отображение на экране
int menu1()
{
    printf("\t\t\t\tRent\n\t\t\t\tPress\n\n\n");
    printf("Ctr+e enter ");
    printf("Ctr+v view ");
    printf("Ctr+s.save ");
    printf("Ctr+r read ");
    printf("Ctr+d.del ");
    printf("Ctr+f search ");
    printf("Ctr+l sort ");
    printf("Ctr+q esc");
    return 0;
}
int menu_sort(rent *&mas,int size)
{
    printf("1.Bubble sort | 2.Shell`s sort | 3.Fast sort\n\n");
    switch(_getch())
        {
            case 49:system("cls");sort_puz(mas,size);_getch();break;
            case 50:system("cls");sort_shell(mas,size);_getch();break;
            case 51:system("cls");quick_sort(mas,0,size-1);_getch();break;
        }
    return 0;
}
read_write
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
#include "type.h"
#include <io.h>
int write(rent *mas,int size)// фукция записи 
{
    FILE *fp = fopen("file.dat","w");//создание файла для записи 
    if(!fp)// проверка на открытие 
        {
            printf("FILE NOT FOUND\n");// ошибка если не открылся 
            return 1;
        }
            fwrite (mas, sizeof(struct rent), size, fp);
    printf("\t\t\t\tFile was saved\n");//вывод сообщения 
    fclose(fp);// закрытие файла 
    return 0;
}
 
 
 
int read(rent *&mas,int size)//функция чтения 
{
    FILE *fp = fopen("file.dat","r");//открытие файла 
    if(!fp)// проверка открытия 
        {
            printf("FILE NOT FOUND\n");//ошибка 
            return 1;
        }
    while (!feof(fp)) //цикл по чтению
        {
            size++;
            mas = (rent *)realloc(mas, size * sizeof(struct rent));
            fread(mas, sizeof(struct rent), 1, fp);
        }
 
    printf("\t\t\t\tFile was read\n");//вывод сообщения 
    fclose(fp);//закрытие файла 
    return size;
}
sort

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
#include "type.h"
void sort_puz(rent *&mas,int size)//функция сортировки 
{
    rent key;
    for(int i=0;i<size;i++)//циклы по перебору 
        for(int j=0;j<size-1;j++)
            {
                if(mas[i].summ>mas[j].summ)//условие сравнения 
                    {
                        key=mas[i];//объмен элементами 
                        mas[i]=mas[j];
                        mas[j]=key;
                    }
            }
    show(mas,size);//вызов функции вывода 
}
void sort_shell(rent *&mas,int size)
{
    int d,i,j;
    rent key;
    d=size;//шаг сортировки 
    while (d>1)
    {
        i=0;
        d=d/2;
        while ((j=i+d)<size)//проверка разделенных массивов
            {
                if (mas[j].summ>mas[i].summ)//сравнение и обмен
                 {
                     key=mas[i];
                     mas[i]=mas[j];
                     mas[j]=key;
                 }
             i++;
            }
    }
    show(mas,size);//вызов функции вывода 
}
void quick_sort(rent *&mas,int first,int end)
{
    rent key,k;
    int i=first,j=end;
    k.summ = mas[(first+end)/2].summ;//нахождение центрального элемента
    do  {
        while (mas[i].summ<k.summ)i++;//проход по элементам 
        while (mas[j].summ>k.summ)j--;          
                if (i<=j)
                    { 
                        if (i<j)
                        {
                            key=mas[j];//обмен 
                            mas[j]=mas[i];
                            mas[i]=key; 
                        }
                    i++;
                    j--;
                    }
             
      }while (i<=j);//условие завершения цикла 
    if (i<end) //вызов рекурсии
        {
            quick_sort(mas,i,end);//рекурсия 
        }
    if (first<j)  
        {
            quick_sort(mas,first,j);
        }
    show(mas,end+1);//вызов функции вывода 
}
прошу прощение за большое количество кода, едва ли приятно кому-то в нём копаться, посему и не стал скидывать. Я уже из-за спортивного интереса отказываться не хочу от старого варианта.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 03:52 #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int read(rent *&mas,int size)//функция чтения 
{
    FILE *fp = fopen("file.dat","r");//открытие файла 
    if(!fp)// проверка открытия 
        {
            printf("FILE NOT FOUND\n");//ошибка 
            return 1;
        }
    while (!feof(fp)) //цикл по чтению
        {
            size++;
            mas = (rent *)realloc(mas, size * sizeof(struct rent));
            fread(mas+size-1, sizeof(struct rent), 1, fp);
        }
 
    printf("\t\t\t\tFile was read\n");//вывод сообщения 
    fclose(fp);//закрытие файла 
    return size;
}
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
int main()
{
    int size=0;
    bool key = false;
    rent *mas=NULL;
    mas = (rent *)malloc(sizeof(rent));
    do
    {
        system("cls");//очистака экрана
        menu1();//вывод меню
        switch(_getch())
            {
                case '\x5':system("cls");
                size = enter(mas, size);
                break;//выбор Пункта меню 
                
                case '\x16':system("cls");
                show(mas,size);
                _getch();break;
 
                case '\x13':system("cls");
                write(mas,size);
                _getch();break;
 
                case '\x12':system("cls");
                size=read(mas,size);
                _getch();break;
 
                case '\x4':system("cls");
                size = delet(mas,size);
                _getch();break;
 
                case '\x6':system("cls");
                find(mas,size);
                _getch();break;
 
                case '\f':system("cls");
                menu_sort(mas,size);
                _getch();break;
 
                case '\x11':system("cls");key = true ;break;
            }
    }while(key!= true);
}

А так?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 04:11 #20
Я одну ошибку сделал в read(). Вот так всё работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int read(rent *&mas)//функция чтения 
{
    
    FILE *fp = fopen("file.dat","rb");//открытие файла 
    if(!fp)// проверка открытия 
    {
        printf("FILE NOT FOUND\n");//ошибка 
        return 1;
    }
    fseek(fp, 0, SEEK_END);
    int size = ftell(fp) / sizeof(struct rent);
    fseek (fp, 0, SEEK_SET );
    
    mas = (rent*)realloc(mas, size  * sizeof(struct rent));
    
    fread(mas, sizeof(struct rent), size, fp);
    
    printf("\t\t\t\tFile was read\n");//вывод сообщения 
    fclose(fp);//закрытие файла 
    return size;
}
Вызов:
C++
1
size = read(mas);
0
Yn94k0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
01.07.2013, 04:17  [ТС] #21
Чёрт, каков дурак!
Я же size в главную программу не возвращал!
Спасибо большое. ТЕперь считывает. И всё бы хорошо, но в конце всегда добавляет нелепый набор символов. Это из-за мешанины типов в файле? Или он нулевой символ не может считать? или ещё что-то?

Добавлено через 2 минуты
alsav22, спасибо, ваш вариант работает полностью правильно. Теперь осталось только понять, чем он качественно отличается от варианта товарища Croessmah и почему я не могу реаллоцирвоать память в цикле)
Спасибо всем огромнейшее!
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 04:17 #22
Цитата Сообщение от Yn94k0 Посмотреть сообщение
И всё бы хорошо, но в конце всегда добавляет нелепый набор символов.
Добавляет куда?

Добавлено через 28 секунд
Цитата Сообщение от Yn94k0 Посмотреть сообщение
от варианта товарища Croessmah
Это Ваш вариант, а не мой
1
Yn94k0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
01.07.2013, 04:20  [ТС] #23
>Добавляет куда?
при выводе массива структур показывает рандомные символы. Так что, полагаю, в какой-то мешанине памяти. Может, неправильно её выделял? Чёрт его знает. Меня пока си с их указателями-ссылками и таким управлением памятью пугают, никак не врублюсь)
БТВ, всем огромное спасибо ещё раз, работает всё идеально.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 04:31 #24
Цитата Сообщение от Yn94k0 Посмотреть сообщение
при выводе массива структур показывает рандомные символы.
При моём варианте всё правильно выводит.
1
Yn94k0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
01.07.2013, 04:33  [ТС] #25
>При моём варианте всё правильно выводит.
Да, я уже это сказал, спасибо. Только я не понимаю, почему другой работает некорректно. Благодарю всех ^^
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 04:34 #26
При таком варианте чтения:
C++
1
2
3
4
5
6
7
 
while (!feof(fp)) //цикл по чтению
{
            size++;
            mas = (rent *)realloc(mas, size * sizeof(struct rent));
            fread(mas+size-1, sizeof(struct rent), 1, fp);
}
будет неправильный size (перед чтением конца файла size уже увеличится и память выделится, но туда ничего не считается).
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 04:36 #27
Цитата Сообщение от Yn94k0 Посмотреть сообщение
Только я не понимаю, почему другой работает некорректно.
Можно так попробовать переписать, но не факт:
C++
1
2
3
4
5
6
7
8
     int ch;
    while ((ch=fgetc(fp))!=EOF) //цикл по чтению
        {
              ungetc(ch,fp);
            ++size;
            mas = (rent *)realloc(mas, size * sizeof(struct rent));
            fread(mas+size-1, sizeof(struct rent), 1, fp);
        }
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 05:09 #28
Yn94k0, у вас есть ещё одна нелогичность в коде: в main() выделяете память под одну структуру, но size при этом не увеличиваете.

Добавлено через 2 минуты
По идее, память там вообще не нужно выделять.

Добавлено через 25 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
Можно так попробовать переписать, но не факт:
Еще вариант:
C++
1
2
3
4
5
6
7
8
9
rent temp;
while (1) 
{
    fread(&temp, sizeof(struct rent), 1, fp);
    if (feof(fp)) break;
    size++;
    mas = (rent *)realloc(mas, size * sizeof(struct rent));
    *(mas + size - 1) = temp;
}
0
01.07.2013, 05:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2013, 05:09
Привет! Вот еще темы с ответами:

Запись и чтение структуры из бинарного файла - C++
Проблема заключается в том, что, когда идёт запись и считка с бин. файла - нормально выводит лишь первый элемент,а второй и тд. - иные...

Запись структуры и чтение из файла в структуру ( как бы лучше ) - C++
Подкиньте идею как лучше записать структуру в файл и обратно из файла в структуру У меня есть мысль: даны 4 элемента вводим их в...

Запись структуры в файл, чтение из файла и удаление (файловый ввод/вывод) - C++
Добрый вечер! Возникла такая проблема, что при добавлении записи, удаляются уже имеющиеся записи в файле. Также не помешала бы помощь в...

Чтение/запись структуры "Клиент" из текстового файла - C++
Здравствуйте. Помогите вывести данные из текстового файла обратно в программу. У меня есть некая структура, и функция которая пишет...


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

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

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