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

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

Войти
Регистрация
Восстановить пароль
 
Bramme
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 60
#1

Считывание структур из файла - C++

19.05.2013, 21:50. Просмотров 375. Ответов 0
Метки нет (Все метки)

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
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define Lmax 20
 
struct student
{
 struct {
    char name[Lmax],surname[Lmax],patronymic[Lmax];
    } fio;
 struct {
     int mark1,mark2,mark3,mark4,mark5; float average;
    } uspev;
 char group[Lmax];
student *next;
};
 
student* queue(char name[]){
   student *tek,*queue=NULL;
   int i; int B[5]={0};
   FILE *f;
   if (!(f=fopen("D:\\Utilities\\QtProj\\Que\\in.txt","r")))
      puts("File not found");
   else
      {
      while(!feof(f))
         { //выделение памяти для новой записи
         tek=(student*)malloc(sizeof(student));
            fgets(tek->fio.name,Lmax,f);
            tek->fio.name[strlen(tek->fio.name)-1]='\0';
            fgets(tek->fio.surname,Lmax,f);
            tek->fio.surname[strlen(tek->fio.surname)-1]='\0';
            fgets(tek->fio.patronymic,Lmax,f);
            tek->fio.patronymic[strlen(tek->fio.patronymic)-1]='\0';
            fgets(tek->group,Lmax,f);
            tek->group[strlen(tek->group)-1]='\0';
            for (i = 0; i < 5; ++i)
                fscanf(f,"%d", &B[i]);
            i=0;
            fgetc(f); // тут для меня не совсем понятно взаимодействие функций scanf и gets
            tek->uspev.mark1=B[0];
            tek->uspev.mark2=B[1];
            tek->uspev.mark3=B[2];
            tek->uspev.mark4=B[3];
            tek->uspev.mark5=B[4];
            tek->uspev.average=(B[0]+B[1]+B[2]+B[3]+B[4])/5;
            tek->next=NULL;
            if (queue!=NULL)
                queue->next=tek; else queue=tek;
         }
      free(tek);
      }
   return(queue);
   }
 
student* viv(student* queue) { //в данной процедуре проверяю правильность считанных данных
    student *tek;
    tek=queue;
    while (tek) {
        printf("%s\n",tek->fio.name);
        tek=tek->next;
}
}
 
int main() {
student *first; //указатель на вершину очереди
char name1[Lmax],name2[Lmax];
printf("Input file name: ");
gets(name1);
printf("Output file name: ");
gets(name2);
first=queue(name1);
viv(first);
return 0;
}
Добрый вечер. В вышеупомянутом коде мне необходимо считать структуры из файла, и составить линейную очередь из этих структур(вид структуры:
Имя
Фамилия
Отчество
Группа
Баллы
Средний Балл.
Средний балл в файле не записывается, высчитывается в самой программе. Каждое поле структуры занимает в файле одну строку, а массив оценок размещается на отдельной строке). Считывание в моей программе проводится некорректно. Данные в файле записаны у меня следующим образом:
Alex
Petrov
Ivanovich
FPM
2 4 5 6 7
Sergei
Ivanov
Petrovich
FEM
1 5 7 2 10

Укажите, пожалуйста, на ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 21:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание структур из файла (C++):

Считывание из файла в массив структур - C++
Доброго времени суток! Есть структура: struct iDiscipline{ char name; int num_course; int num_term; int am_lec; ...

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

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

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

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Считывание файла в массив и запись нового файла - C++
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и сразу они переписываются в другой файл. В...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 21:50
Привет! Вот еще темы с ответами:

Считывание с файла - C++
Нужно считать с текстового файла числа не зная их количество, вроде не сложно, но как не пробую считывает бред какой то. Кто нить помогите,...

Считывание с файла - C++
Подскажите, плиз, как из файла в массив считать строку вместе с пробелами?

Считывание из файла - C++
есть файл с настройками prog.conf вида: date = 01.02.2010 time = 15:05:45 step = 0.5 ... есть переменные: day, month, year,...

считывание из файла - C++
привет всем. полазил по форуму но так и не понял как считывать с файла для моей задачи.. как считать из файла чтоб можно было потом...


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

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

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