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

Не работает запись в структуру с последующим выводом

21.01.2019, 18:57. Просмотров 816. Ответов 1

Вообщем, проблема такая. С помощью первого кода идет запись в файл, второго - вывод с файла средней оценки студентов группы, которая нам нужна и средний бал группы.
1-ый код
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
#include <stdio.h>
#include <conio.h>
int main(void){
struct tov{char name[255];char index[255]; int exam1; int exam2; int exam3; int exam4; int exam5;} x;
int n, i;
FILE *f;
printf("Количество записей: ");
scanf("%d",&n);
if((f=fopen("D:\\baza.txt","w"))==NULL)printf("Файл не открыто!");
 
else { for(i=1; i<=n; i++){
        printf("Информация про студента:\n");
            fflush(stdin);
            printf("Фамилия: "); gets(x.name); fflush(stdin);
            printf("Индекс группы: "); gets(x.index);
            printf("Оценки с 5 экзаменов:\n");
            printf("С 1-го экзамена:"); scanf("%d", &x.exam1);
            printf("С 2-го экзамена:"); scanf("%d", &x.exam2);
            printf("С 3-го экзамена:"); scanf("%d", &x.exam3);
            printf("С 4-го экзамена:"); scanf("%d", &x.exam4);
            printf("С 5-го экзамена:"); scanf("%d", &x.exam5);fflush(stdin);
      fwrite(&x,sizeof(x),1,f);}
        fflush(stdin);
    getchar();  }
}

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
#include <stdio.h>
#include <string.h>
struct tov{char name[255];char index[255]; int exam1; int exam2; int exam3; int exam4; int exam5; };
int main()
{ struct tov x;
    FILE *f;
    char answer[255];
    float sum, allsum, i;
printf("Какая группа вас интересует??\n");
gets(answer);
if((f=fopen("D:\\baza.txt","r"))==NULL)
      printf("Файл не открыто!");
  else { while ( fread(&x, sizeof(x), 1, f ))
        if(strcmp(x.index, answer)==0){
        printf("Средний бал студента %s группы %s - ", x.name, answer);
        sum=x.exam1+x.exam2+x.exam3+x.exam4+x.exam5;
        printf("%.2f\n",sum/5);
        i++; allsum+=sum/5;
        }
    printf("Средний бал студентов группы %s - %.2f", answer, allsum/i);
 
}
fclose(f);
       }
Проблема - как только хочу добавить в первом коде, в структуру переменные для зачётов - char zalik1[255]; char zalik2[255];
с последующим их вводом в первом коде printf("С 1-ого зачёта:"); gets(x.zalik1);fflush(stdin);
printf("С 2-ого зачёта:"); gets(x.zalik2);, то второй код начинает работать некорректно. Объясните, пожалуйста, почему?(В втором коде переменные в структуру добавляю)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2019, 18:57
Ответы с готовыми решениями:

Считывание из бинарного файла в структуру с последующим выводом
В бинарном файле храниться инфа: Имя_пользователя дата_подключения номер Имя_пользователя...

Поиск значения с последующим выводом
Есть код, который работает, но маленький недостаток . В БД хранятся номера в которых может...

Поиск значения с последующим выводом
Помогите ламеру в php. Суть такая. Нужно организовать поиск по указанным значениям с...

Читать файл, с последующим выводом на экран
Есть текстовый файл, содержимое которого выглядит следующим образом: Noah 18090 Liam ...

Сортировка массивов с последующим выводом в richTextBox
имеется 2 массива типа string и int. string imena; int nomera; for (int i = 0; i &lt; 5; i++)...

1
L0M
790 / 389 / 197
Регистрация: 01.10.2018
Сообщений: 818
Завершенные тесты: 1
22.01.2019, 00:54 2
Лучший ответ Сообщение было отмечено vortex56 как решение

Решение

1. Для fread/fwrite файлы надо открывать в двоичном режиме. Т.е. в fopen() последний аргумент должен быть "rb" или "wb" соответственно.

2. Для чистоты эксперимента, я бы вынес объявление структуры в отдельный .h-файл с последующим подключением в обе программы include-ом.

3. После изменения структуры перед запуском второй программы обязательно обновить файл данных с помощью первой программы.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2019, 00:54

Ошибка в проверке строк на символы с последующим выводом
Добрый день, есть задание согласно которому пользователь вводит в одну строку символы, разделённые...

Загрузить данные из БД в DataTable с последующим выводом в DGV
помогите пожалуйста ;) мне нужна чтобы из база данных перенести информацию в datatable а потом...

Парсер базы данных с последующим выводом информации
Есть текстовый документ. В нем несколько записей подобной конструкции(кол-во записей может доходить...


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

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

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