Привет, ребята, я новичок в файлах. Мне нужно найти определенные c данные (KJadid.Tedad) и заменить в них какое-то другое целое число. вот код, который я использую:
fseek(fileKALAJADIDptr, 0, SEEK_SET);
int mojoodi, shomare;
scanf("%d", &shomare);
scanf("%d", &mojoodi);
int i = 0;
while (fread(&KJadid, sizeof(struct KalaJadid), 1, fileKALAJADIDptr))
{
if (i == shomare - 1)
{
KJadid.Tedad = mojoodi;
fseek(fileKALAJADIDptr, (shomare - 1) * sizeof(struct KalaJadid), SEEK_SET);
fwrite(&KJadid, sizeof(struct KalaJadid), 1, fileKALAJADIDptr);
break;
}
i++;
}
fclose(fileKALAJADIDptr);
с fseek I go в начало файла, затем получите shomare & mojoodi («shomare» - это структура, данные которой я хочу изменить, а «mojoodi» "- новые данные), затем я читаю файл, пока не достигну нужной структуры, затем я использую fseek для замены данных там, где они были, и использую fwrite для записи данных в файл, но когда я распечатываю данные (которые я использую этот код for:)
int i = 0;
while (fread(&KJadid, sizeof(struct KalaJadid), 1, fileKALAJADIDptr))
{
printf("\n\n\n\tID: %d \t %s \t Gheymat: %d \t Tedad: %d \t Emtyaz: %d \t Daste Bandi: %s \n\n\t
Sharh Kala: \n\n\t\t %s", i + 1, KJadid.EsmKala, KJadid.Gheimat, KJadid.Tedad, KJadid.Emtiaz,
KJadid.DasteBandi, KJadid.Sharh);
i++;
}
он распечатывает все данные, которые были у него раньше, и, наконец, печатает новые данные (ничего не заменяет, просто добавляет данные в конец файла)
вы ребята спросили, как я открыл файл:
FILE* fileKALAJADIDptr = fopen(fileKALAJADID, "a+b");
if (fileKALAJADIDptr == NULL)
{
fopen(fileKALAJADID, "w+");
}
что мне делать, чтобы просто заменить данные, а не записать все это в конце? помогите пожалуйста