Я только что создал программу для удаления записи из двоичного файла, но проблема в том, что даже если программа находит совпадение с именем, она фактически не удаляет ее из файла, когда я записываю записи во временный файл. файл. Возможно, я ошибаюсь в другом состоянии?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int dd;
int mm;
int yyyy;
}date;
struct _food
{
char category[20];
char name[30];
int amount;
data expiry;
int calories;
} food;
int main()
{
FILE* fba;
FILE* temp;
int found = 0;
char nome_t[30];
char newname[] = "alimenti.bin";
char oldname[] = "temp.bin";
fba = fopen("alimenti.bin", "rb");
temp = fopen("temp.bin", "wb");
printf("Type the name of the food you want to delete:\n");
gets(nome_t);
while(fread(&food,sizeof(food),1,fba))
{
if(strcmp(nome_t,food.name) != 0)
{
fwrite(&food,sizeof(food),1,temp);
}
else{
found = 1;
printf("Match found. Food deleted.\n");
}
}
if (!found){
printf("No match.\n");
}
fclose(fba);
fclose(temp);
remove(oldname);
rename(oldname,newname);
system("PAUSE");
return 0;
}