Задание: Запись имеет вид: название вуза, число студентов, количество факультетов. Добавить в конце файла информацию о трех новых вузах и посчитать общее число студентов.
Все написал, функция расчета общего числа не работает, не могу найти ошибку. Может кто подскажет что не правильно делаю.
| Код | #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); }
|
|