Подскажите где ошибку - C (СИ)
Формулировка задачи:
- #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();
- }
Решение задачи: «Подскажите где ошибку»
- 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, что обычно означает успешное выполнение.
Вот список переменных и их значений в данном коде:
- dat - указатель на файл, в который сохраняется список.
- telefonh - указатель на первый элемент связного списка.
- a - временная переменная, используемая в цикле для обхода связного списка.
- fname - имя файла, в который сохраняется список.
- fam, name, otch, n_tel, adres, n_sch, dolg - переменные, содержащие соответствующие данные из связного списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д