В этой функции, которую я написал, я в основном искал структуру c, которую я хочу удалить. Я копирую последнюю структуру в двоичном файле в расположение структуры, которую я хочу удалить. (например, если у меня есть 5 структур в файле, и я хочу удалить 4-ю, я копирую 5-ю структуру в структуру на 4-м месте) после этого я хочу удалить последнюю структуру в двоичном файле . и с этим у меня есть некоторые проблемы. Я пытался использовать SetEndOfFile (), но не знаю, как его использовать. пожалуйста, помогите.
void Delete_user(char* delete_user_from_system)
{
user del_user;
long loction_in_file;
char id_input_to_delete[15];
char id[15], pass[15], f_n[20];
int s_l = 0, cnt = 0,num_of_users=0;
long sz = 0;
printf("\n\nEnter ID Of The User You Wish To Delete: ");
scanf("%s", id_input_to_delete);
flushall();
FILE* d_u = fopen(delete_user_from_system, "rb+");
while (!feof(d_u))
{
fread(&del_user, sizeof(user), 1, d_u);
if (strcmp(id_input_to_delete, del_user.ID) == 0)
{
printf("\n\nID:%s \nfull name:%s \nSecurityLevel:%d", del_user.ID,
del_user.FullName, del_user.SecurityLevel);
break;
}
cnt++;
}
rewind(d_u);
while (!feof(d_u))
{
fread(&del_user, sizeof(user), 1, d_u);
num_of_users++;
}
fclose(d_u);
d_u = fopen(delete_user_from_system, "rb+");
fseek(d_u, sizeof(user)* (num_of_users - 1), SEEK_SET);
fread(&del_user, sizeof(user), 1, d_u);
strcpy(id, &del_user.ID);
strcpy(pass, &del_user.Password);
strcpy(f_n, &del_user.FullName);
s_l = del_user.SecurityLevel;
printf("\n\nID:%s \nfull name:%s \nSecurityLevel:%d", del_user.ID,
del_user.FullName, del_user.SecurityLevel);
fclose(d_u);
d_u = fopen(delete_user_from_system, "rb+");
fseek(d_u, sizeof(user)*cnt, SEEK_SET);
strcpy(&del_user.ID, id);
strcpy(&del_user.Password, pass);
strcpy(&del_user.FullName, f_n);
del_user.SecurityLevel = s_l;
fwrite(&del_user, sizeof(user), 1, d_u);
fclose(d_u);
}
Допустим, 4 последние строки в файле - это одна структура (та, что с "z" ....) и я хочу удалить последние 4 строки