Задание: Запись имеет вид: название вуза, число студентов, количество факультетов. Добавить в конце файла информацию о трех новых вузах и посчитать общее число студентов.
Все написал, функция расчета общего числа не работает, не могу найти ошибку. Может кто подскажет что не правильно делаю.
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<locale.h>
struct tov {char name[10];float c;int sum;} t1;
void input(FILE *);//создание нового файла
void print(FILE *);//просмотр файла
void app(FILE *);//добавление в файл
void kolich(FILE *);//подсчет общего количество студентов
main()
{setlocale(LC_CTYPE,"Russian");
char c;
FILE *tf;
while (1)
{system("CLS");
puts("1 - Создание нового файла");
puts("2 - Просмотр файла");
puts("3 - Добавление в файл");
puts("4 - Количество студентов");
puts("0 - Выход");
c=getch();
switch(c)
{case '1':input(tf);break;
case '2':print(tf);break;
case '3':app(tf);break;
case '4':kolich(tf);break;
case '0':return 0;
default:puts("Неверный режим");
}
}
}
void input(FILE *tf)
{char ch;
tf=fopen("file1.dat","wb");//открытие бинарного файла для записи
system("CLS");
printf("\n Ввод информации о вузе\n");
do
{printf("\n Название вуза: "); scanf("%s",&t1.name);
printf(" Число студентов: "); scanf("%f",&t1.c);
printf(" Количество факультетов: "); scanf("%d",&t1.sum);
fwrite(&t1,sizeof(t1),1,tf);//запись в файл одной строкой t1
printf("\n Закончить? y/n ");
ch=getch();
}
while(ch != 'y');
fclose(tf);
}
void print(FILE *tf)
{int i;
system("CLS");
tf=fopen("file1.dat","rb");//открытие бинарного файла для чтения
i=1;
fread(&t1,sizeof(t1),1,tf);//чтение из файла одной структуры t1
while(!feof(tf))
{printf("\n %1d Вуз: %1s | Количество студентов: %1.0f | Количество факультетов: %1d",i,t1.name,t1.c,t1.sum);
fread(&t1,sizeof(t1),1,tf);
i++;
}
getch();
}
void app(FILE *tf)
{char ch;
tf=fopen("file1.dat","ab");//открытие бинарного файла для добавления
system("CLS");
printf("\n Название вуза \n");
do
{printf("\n Название: "); scanf("%s",&t1.name);
printf(" Число студентов: "); scanf("%f",&t1.c);
printf(" Количество студентов: "); scanf("%d",&t1.sum);
fwrite(&t1,sizeof(t1),1,tf);
printf(" Закончить? y/n ");
ch=getch();
}
while(ch != 'y');
fclose(tf);
}
void kolich(FILE *tf)
{ int sum;
tf=fopen("file1.dat","rb");
sum=1;
fread(&t1,sizeof(t1),1,tf);
while (!feof(tf))
{
sum++;
}
printf("Количество:",sum);
getch();
fclose(tf);
}