Итак, у меня есть этот код, функция для изменения отметки в базе данных колледжа. Таким образом, нам нужно получить номер класса, и для каждого ученика в этом классе мы изменим первую отметку и сохраним ее позже в том же файле. например, мы получаем класс 1026. У Андрея есть эти оценки (цифры от 1 до 10): 4,6,9,9,9,9,9,9,9,10. Елена получила: 10,6,8,7,7, 6,6,7,9,10 После вызова функции мы получим: Андрей: 10,6,9,9,9,9,9,9,9,10 Елена 5,6,8,7,7, 6,6,7,9,10 Однако после первого ученика в этом классе чтение нового первого знака для второго будет повторяться бесконечно, и я не могу понять это. Вот код:
typedef struct{
char is;//this will help us to see if the registration number exist in the file(0-if false, 1-if true)
int nrmat;//registration number
char name[20];
int year;
int class;
float mark[10];
}stud;
void new_mark(char name_file[20])
{
FILE *f;
stud a;
int class, mark;
if(!(f=fopen(name_file,"rb+"))) printf("no file found");
else {
printf("\nclass = ");scanf("%d",&class);
while(!feof(stdin))
{
rewind(f);
fread(&a,sizeof(stud),1,f);
while(!feof(f))
{
if(a.is == 1 && a.class == class)
{
printf(a.name);printf("\n\n");
printf("the new mark is: ");scanf("%d", &mark);
a.mark[0] = mark;
fseek(f,(a.nrmat-1)*sizeof(stud),0);
fwrite(&a,sizeof(stud),1,f);
}
fread(&a,sizeof(stud),1,f);
}
printf("\nclass = ");scanf("%d",&class);
}
fclose(f);
}
}