В этом фрагменте кода я пытаюсь проверить, есть ли уже строка в списке. Теперь мне нужно использовать функции fread и fwrite для хранения информации в двоичном файле. Я пробовал что-то делать, но, похоже, это меня ни к чему не привело. Это исходный код без fread и fwrite:
if(cont < N)
{
printf("\n");
printf("Enter the club name: ");
gets(club[cont].name);
for(i = 0; i < cont; i++)
{
res_entered = strcmp(club[cont].name, club[i].name);
if(res_entered == 0)
{
do
{
printf("This club is present in the list. Enter another one: \n");
gets(club[cont].name);
res_entered = strcmp(club[cont].name, club[i].name);
}while(res_entered == 0);
}
}
cont++;
}
else
{
printf("Error. Maximum number of clubs \n");
}
Может кто-нибудь помочь мне понять, как использовать fread и fwrite в этом конкретном случае, пожалуйста?
Код с fread и fwrite
if(cont < N)
{
fp = fopen("list.dat", "ab");
printf("\n");
printf("Enter the club name: ");
gets(club[cont].name);
strcpy(club[i].name, club[cont].name);
club[i].points = 0;
club[i].gscored = 0;
club[i].gconceded = 0;
fwrite(&club[i], sizeof(club[i]), 1, fp);
fclose(fp);
for(i = 0; i < cont; i++)
{
fp = fopen("list.dat", "rb");
while( (fread(&club[i], sizeof(club[i]), 1, fp)) == 1)
{
cont++;
}
res_entered = strcmp(club[cont].name, club[i].name);
if(res_entered == 0)
{
do
{
printf("This club is present in the list. Enter another one:
gets(club[cont].name);
res_entered = strcmp(club[cont].name, club[i].name);
}while(res_entered == 0);
}
}
fclose(fp);
}
else
{
printf("Error. Maximum number of clubs \n");
}