Подскажите где ошибку - 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 - переменные, содержащие соответствующие данные из связного списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д