Подскажите где ошибку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание: Создать файл («БД») и выполнить его обработку в соответствии с табл.45. Обработка заключается в выборе из файла и вы- даче на экран требуемой информации. Формат данных: Поиск в базе данных вида «Фамилия, имя, группа, дата рождения, средний рейтинг» всех студентов, чьи даты ро- ждения в списке находятся между двумя заданными Действие: Поиск данных и возвращение как всего содержимого базы, так и за- писей, удовлетворяющим услови- ям поиска (список отсортировать по фамилиям)
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <string.h>
void main(void)
{
clrscr();
 
struct stud {
    char fam[10],
         name[10],
         gr[10];
    int date,month,year;
    float rt;
 };
stud ek[3]={{"Ivanov","Ivan","ќЉ-03-1",26,2,1986,98.5},
        {"Petrov","Petr","ќЉ-03-2",14,7,1986,78.7},
        {"Sidorov","Sidor","ќЉ-03-2",8,9,1986,91.2}}, s1; int i,j;
FILE *f;
f=fopen("rgr2.dat","w");
for (i=0;i<3;i++) {
fwrite(&ek[i],sizeof(stud),1,f);}
fclose(f);
printf("‘®¤Ґа¦Ё¬®Ґ д*©«*:\n");
f=fopen("rgr2.dat","r");
if ((f=fopen("rgr2.dat","r"))==NULL) {
printf("ЋиЁЎЄ* ЇаЁ звҐ*ЁЁ д*©«*!\n");return;}
do {
fread(&s1,sizeof(stud),1,f);
if (!feof(f)) {
printf("%12s%12s%12s%12i%12i%12i%7.2f\n ",s1.fam,s1.name,s1.gr,s1.date,s1.month,s1.year,s1.rt);
}} while (!feof(f));
int d1,d2,m1,m2,y1,y2;
printf("Vvedite pervoe chislo:\n");
scanf("%i",&d1);
printf("Vvedite perviy month:\n");
scanf("%i",&m1);
printf("Vvedite perviy year:\n");
scanf("%i",&y1);
printf("Vvedite vtoroe chislo:\n");
scanf("%i",&d2);
printf("Vvedite vtoroy month:\n");
scanf("%i",&m2);
printf("Vvedite vtoroy year:\n");
scanf("%i",&y2);
printf("Studenti rodivshiesya meshdu dvumya datami:\n");
fseek(f,0L,SEEK_SET);
do {
fread(&s1,sizeof(stud),1,f);
if ((s1.year>y1)&&(s1.year<y2)&&(s1.date>d1)&&(s1.date<d2)&&(s1.month>m1)&&(s1.month<m2)) {
printf("%12s%12s%12s%12i%12i%12i%7.2f\n ",s1.fam,s1.name,s1.gr,s1.date,s1.month,s1.year,s1.rt);}
} while (!feof(f)); fclose(f);
getch();
}
Почему-то не создается файл... Помогите!!!

Решение задачи: «Подскажите где ошибку»

textual
Листинг программы
int f_save()
    {
     FILE *dat;
     telefon *a;
     dat=fopen(fname,"w");
     for(a=telefonh;a!=NULL;a=a->next)
        fprintf(dat,"%s %s %s %s %s %d %d\n",a->fam,a->name,a->otch,a->n_tel,a->adres,a->n_sch,a->dolg);
     fprintf(dat,"***\n");
     fclose(dat);
     printf("List saved pres any key...");
     getch();
     return 0;
    }

Объяснение кода листинга программы

В данном коде выполняется сохранение списка телефонных номеров в файл. Список представлен в виде связного списка, каждый элемент которого содержит следующую информацию: фамилию, имя, отчество, номер телефона, адрес и некоторую дополнительную информацию (должность, возможно). Список сохраняется в файл с помощью функции fprintf, которая записывает строку формата в файл. Формат строки включает в себя поля для каждого из перечисленных выше элементов. После сохранения списка в файл, в него добавляется строка *** для разделения списка от других данных, которые могут быть сохранены в этом файле. После закрытия файла, программа выводит сообщение List saved. Pres any key..., что означает Список сохранен. Нажмите любую клавишу.... Это сообщение появляется до тех пор, пока пользователь не нажмет какую-либо клавишу. Возвращаемое значение функции - 0, что обычно означает успешное выполнение. Вот список переменных и их значений в данном коде:

  1. dat - указатель на файл, в который сохраняется список.
  2. telefonh - указатель на первый элемент связного списка.
  3. a - временная переменная, используемая в цикле для обхода связного списка.
  4. fname - имя файла, в который сохраняется список.
  5. fam, name, otch, n_tel, adres, n_sch, dolg - переменные, содержащие соответствующие данные из связного списка.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5