0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
1

Не читается файл

18.01.2016, 17:45. Показов 432. Ответов 0
Метки нет (Все метки)

Задание: Информация об участниках спортивных соревнований содержит название команды, ФИО игрока, возраст. Вывести информацию о спортсменах, возраст которых не достиг 18 лет.

Всё работает как часы: создаётся файл, в структуру Member вводятся (и выводятся на экран те кому меньше 18) спортсмены, благополучно записываются в файл... Но стоит только из этого файла информацию попытаться прочесть, как вдруг ничего не получается. Структура обновилась, но данные в неё из файла не занеслись

C++ (Qt)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <iostream>
#include <math.h>
#include <iomanip>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sstream>
 
using namespace std;
 
FILE *fl;
typedef struct {
    char fio[64];
    char age[3];
    char cmd[64];
} Member;
 
Member member[30];
char name[20]; // Имя файла
int nst=0; // Число введенных структур
int menu(); // Меню
void nnf(); // Ввести имя файла
void newf(); // Создать новый файл
void spisok(); // Ввести список
void opf(); // Открыть файл
void resc(); // Вывести результат на экран
void resf(); // Вывести результат в файл
 
int main() {
    setlocale(0, "");
    while (true) {
        switch (menu()) {
            case 1:
                nnf();
                break;
            case 2:
                newf();
                break;
            case 3:
                spisok();
                break;
            case 4:
                opf();
                break;
            case 5:
                resc();
                break;
            case 6:
                resf();
                break;
            case 7:
                return 0;
            default: "Выберите правильно!"
                ;
        }
 
        puts("Press any key to continue");
        getch();
        system("cls");
    }
 
    return 0;
}
 
int menu() { // Меню
    cout << "Выберите:" << endl;
    cout << "1. Ввод имени файла" << endl;
    cout << "2. Новый файл" << endl;
    cout << "3. Ввод списка" << endl;
    cout << "4. Открыть файл" << endl;
    cout << "5. Вывести результат" << endl;
    cout << "6. Вывести в файл" << endl;
    cout << "7. Давай, до свидания!" << endl;
    int i;
    cin >> i;
    return i;
}
void nnf() { // Ввести имя файла
    cout << "Введите имя файла" << endl;
    cin >> name;
}
void newf() { // Создать новый файл
    if ((fl = fopen(name,"wb"))==NULL) {
        cout << "Ошибка при создании"<<endl;
        exit(1);
    }
    cout << "OK" << endl;
    fclose(fl);
}
void spisok() { // Ввести список
    if ((fl = fopen(name,"rb+"))==NULL) {
        cout << "Ошибка при создании"<<endl;
        exit(1);
    }
    cout << "Введите число спортсменов: " << endl;
    cin >> nst;
    for (int i=0; i<nst; i++) {
        cout << "Введите имя: ";
        cin >> member[i].fio;
        cout << "Введите возраст: ";
        cin >> member[i].age;
        cout << "Введите команду: ";
        cin >> member[i].cmd;
        fwrite( &member[i], sizeof(Member), 1, fl );
    }
    fclose(fl);
}
void opf() { // Открыть файл
    if ((fl = fopen(name,"rb"))==NULL) {
        cout << "Ошибка при открытии"<<endl;
        exit(1);
    }
    nst=0;
    Member std;
    while(true) {
        int nwrt = fread( &std, sizeof(Member), 1, fl );
        if (nwrt!=1) break;
        member[nst]=std;
        cout << member[nst].fio << " " << member[nst].age << " " << member[nst].cmd << endl;
        nst++;
    }
    fclose(fl);
}
void resc() { // Вывести результат на экран
    for (int i=0; i<nst; i++) {
        int v=atoi(member[i].age);
        if (v<18)
            cout << member[i].fio << ", " << member[i].age << " лет (" << member[i].cmd << ")" << endl;
    }
}
void resf() { // Вывести результат в файл
    char namet[30];
    FILE *ft;
    cout << "Введите имя файла" << endl;
    cin >> namet;
    if ((ft = fopen(namet,"w"))==NULL) {
        cout << "Ошибка при создании"<<endl;
        exit(1);
    }
    char s[256];
    for (int i=0; i<nst; i++) {
        int v=atoi(member[i].age);
        if (v>0) {
            strcpy(s, member[i].fio);
            strcat(s, " ");
            std::ostringstream oss;
            oss << s << member[i].age << " " << member[i].cmd << "\n";
            fputs(oss.str().c_str(), ft);
            /*strcpy(s, member[i].fio);
            strcpy(s, " ");
            strcpy(s, member[i].age);
            strcpy(s, " ");
            strcpy(s, member[i].cmd);
            strcat(s, "\n");
            fputs(s, ft);*/
        }
    }
    fclose(ft);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2016, 17:45
Ответы с готовыми решениями:

Не правильно читается файл
Здравствуйте! Подскажите, пожалуйста, из-за чего у меня не правильно читается файл и как это...

Неправильно читается файл
Здравствуйте. Подскажите, пожалуйста. Написал программу, которая создает динамический массив длиной...

Не читается txt-файл
Не могу прочитать из файла &quot;readme.txt&quot; Где ошибка? #include&lt;iostream&gt; #include&lt;fstream&gt; using...

Не читается бинарный файл
Мне нужно байты бинарного файла (изображение) сохранить в char-массиве (для последующей кодировки в...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2016, 17:45
Помогаю со студенческими работами здесь

Qt - не читается файл
Добрый вечер. Эта программа должна полностью прочитать текстовой файл и вывести его содержимое в...

Файл не читается
Открываю список файлов, записанный в файл FullFoldersAndFiles.txt, хочу открыть один файл из списка...

Файл не читается
При отладке, появляется ошибка &quot;f:\dd\vctools\crt\crtw32\stdio\fopen.c Line 54...

QFile, файл не читается
QFile file(&quot;file.txt&quot;); if(!file.open(QIODevice::ReadOnly|QIODevice::Text)) ...

Почему не читается файл?
В приложенном файле проекта, по нажатию кнопки поочередно происходит чтение из файла и очистка...

Не читается ini файл
Есть файл с содержимым param1=123 param2=321 param3=456 param=abc param2=cdf param3=ddd


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru