Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Не могу найти ошибку в функции (http://forum.oszone.net/showthread.php?t=273677)

devl13 09-12-2013 20:07 2269540

Не могу найти ошибку в функции
 
Задание: Запись имеет вид: название вуза, число студентов, количество факультетов. Добавить в конце файла информацию о трех новых вузах и посчитать общее число студентов.

Все написал, функция расчета общего числа не работает, не могу найти ошибку. Может кто подскажет что не правильно делаю.

Код:

#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); 
}


pva 09-12-2013 21:22 2269592

дык у тебя её зациклить должно пока компу не надоест. Смотри внимательно, что в цикле написал. Пройдись отладчиком


Время: 19:21.

Время: 19:21.
© OSzone.net 2001-