Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 2
1

Неправильно считывается файл

28.04.2015, 20:34. Просмотров 424. Ответов 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
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#pragma hdrstop
#pragma argsused
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#define N 10
#define FILENAME "Bilet.txt"
 
using namespace std;
struct DATE1
{
   int day;
   int month;
   int year;
};
struct TICKETS
{
   char destination[20];//pynkt
   int flight;//nomber
   char name[20];//F.I.O.
   DATE1 date;//date
};
int menu()
{
    printf("1.Добавить данные\n");//dobavit danne
    printf("2.Найти заявку по дате и номеру рейса\n");//izvlech po date i nomery
    printf("3.Вывести все\n");//izvlech vse
    printf("0.Выход");//exit
    printf("\n\n");
    return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251); //или аналог вроде system("cmd /c chcp 1251")для переключения кодировки консоли
setlocale( LC_ALL,"Russian" );
FILE *in;
 
in = fopen(FILENAME, "wb");
    TICKETS s[N];
    DATE1 m[N];
    bool flag;
    int i,dobavka,variant,interes,nomber,kol_vo=0;
 
    if (in != NULL)
    {printf("Файл пуст\n"); printf("\n");}
fclose( in );
 
    menu();
 
    scanf("%d",&variant);
    while(variant!=0)
    {
        switch(variant)
        {
            case 1:
            {
            in = fopen(FILENAME, "a");
                printf("Введите количество добавляемых данных: ");      scanf("%d",&dobavka);
                for(i=kol_vo;i<kol_vo+dobavka;i++)
                {
                printf("Пункт назначения: "); scanf("%s",s[i].destination); //fprintf(in,"%s",s[i].destination);
                printf("Номер рейса: ");      scanf("%d",&s[i].flight);     //fprintf(in," %d",s[i].flight);
                printf("Ф.И.О. пассажира: "); scanf("%s",s[i].name);        //fprintf(in," %s",s[i].name);
                printf("Дата:\n");
                printf("День: " );            scanf("%d",&m[i].day);        //fprintf(in," %d",m[i].day);
                printf("Месяц: ");            scanf("%d",&m[i].month);      //fprintf(in," %d",m[i].month);
                printf("Год: ");              scanf("%d",&m[i].year);       //fprintf(in," %d",m[i].year);
                printf("\n");                                               //fprintf(in,"\r\n");
                fwrite(s,sizeof(TICKETS),1,in);
                }
                kol_vo=kol_vo+dobavka;
                //clrscr();
                menu();
                scanf("%d",&variant);
                break;
            fclose( in );
            }
        case 2:
            {
            int year, month, day;
            in = fopen(FILENAME, "r+b");
            fseek(in, 0, SEEK_SET); /* переместиться в начало файла */
             for(i=0; i<kol_vo ;i++)
 
             //fscanf(in, "%s%d%s%d%d%d", s[i].destination, s[i].flight, s[i].name, m[i].day, m[i].month, m[i].year);
                printf("Введите номер рейса: ");   scanf("%d",&nomber);
                printf("Введите день вылета: ");   scanf("%d",&day);
                printf("Введите месяц вылета: ");  scanf("%d",&month);
                printf("Введите год вылета: ");    scanf("%d",&year);
                    for (i=0; i<kol_vo ;i++)
                    fread(s,sizeof(TICKETS),1,in);
                    if ((s[i].flight==nomber)&&(m[i].day==day)&&(m[i].month==month)&&(m[i].year==year))
                    {
                       printf("\nПункт назначения: %s ", s[i].destination);
                       printf("\nНомер рейся: %d ", s[i].flight);
                       printf("\nФ.И.О. пассажира: %s ", s[i].name);
                       printf("\nДень %d ", m[i].day);
                       printf("\nМесяц %d ", m[i].month);
                       printf("\nГод %d \n", m[i].year);
                       printf("\n");
                       flag=true;
                    }
                    if (false == flag) {printf("------------------------\n");printf("Неопределён\n");printf("------------------------\n");}
                    flag = false;
                //clrscr();
                menu();
                scanf("%d",&variant);
                break;
            fclose( in );
            }
        case 3:
            {
            in = fopen(FILENAME, "r+b");
              fseek(in, 0, SEEK_SET); /* переместиться в начало файла */
                 //for(i=0; i<kol_vo ;i++)
                 //fscanf(in, "%s%d%s%d%d%d", s[i].destination, s[i].flight, s[i].name, m[i].day, m[i].month, m[i].year);
                 printf("Список пасажиров: \n");
                 for(i=0; i<kol_vo ;i++)
                 fread(s,sizeof(TICKETS),1,in);
                 printf("%s\t %d\t %s\t %d\t %d\t %d\t\n", s[i].destination, s[i].flight, s[i].name, m[i].day, m[i].month, m[i].year);
                 printf("\n");
                 //clrscr();
                 menu();
                scanf("%d",&variant);
                break;
            fclose( in );
            }
        case 0:
            {
                default:
                break;
            }
        }
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2015, 20:34
Ответы с готовыми решениями:

Неправильно считывается массив
Здравствуйте. Есть класс матриц, один из конструкторов позволяет создать матрицу, используя...

Неправильно считывается строка
Прошу помощи. Делаю считывание настроек из ini файла с помощью Properties (...

Неправильно считывается массив из файла
Не пойму в чем ошибка. #include &quot;stdafx.h&quot; #include &lt;string&gt; #include &lt;fstream&gt; #include...

Неправильно считывается структура из файла
Записываю структуру А в файл, затем считываю в структуру В. Символы считываются нормально, а вот...

2
201 / 199 / 65
Регистрация: 06.10.2013
Сообщений: 552
28.04.2015, 20:51 2
C
1
2
3
4
5
/*Зачем?!*/
fseek(in, 0, SEEK_SET); /* переместиться в начало файла */
 
/*Мешанина в типах аргументов. Они должны все быть адресами, но реально таковыми не являются.*/
fscanf(in, "%s%d%s%d%d%d", s[i].destination, s[i].flight, s[i].name, m[i].day, m[i].month, m[i].year);
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 2
28.04.2015, 20:56  [ТС] 3
Неет... fscanf в комментах же, я их убрал, мне нужно записать данные в бинарном коде в файл, а потом считать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2015, 20:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Неправильно считывается значение Caption
Доброго времени суток. Есть меню, в котором динамически создается кнопка. Ее свойству Caption...

Неправильно считывается структура из файла
Добрый день, подскажите, что я делаю не так? Есть структура, находящаяся в начале файла: ...

Неправильно считывается массив из подструктуры
https://www.cyberforum.ru/attachments/403093d1400950588Подскажите пожалуйста в чем ошибка...

Неправильно считывается диапазон значений функции
Вычислить значения функции, если диапазон изменения аргумента и его шаг заданы. Диапазон...


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

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

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