Если вы не хотите сбрасывать свой файл, вы должны использовать параметр «a», потому что теперь, когда вы хотите обновить значение в файле, вы сохраняете только 25 (как в ex), все остальные значения пропали (но «a»)добавляет сохраненное значение в EOF). Если я правильно понял, вы пытаетесь прочитать 3 переменные из файла, но когда вы делаете это:
fscanf(file, "%d", &age[i]);
, вы получаете только первую переменную в файле. Если вы хотите получить третью, вам нужно вызывать эту функцию еще 2 раза.
Лучше получить все данные в массиве в цикле и затем работать с массивом.
#include <stdio.h>
#define SIZE 40
int main()
{
FILE *file;
int age[SIZE], s,i, j=0;
printf("Enter the array index:");
scanf("%d", &i);
file = fopen("data.txt", "r");
if (file == NULL)
{
printf("files does not exist");
return 1;
}
while(1){ //getting all data from file to array
if(feof(file))
break;
fscanf(file, "%d", &age[j++]);
}
for(int x=0;x<j;x++)
printf("%d ",age[x]);
fclose(file);
printf("\nEnter how much age should to be subtracted:");
scanf("%d", &s);
file = fopen("data.txt", "w");
age[i] -= s;
for(int k=0;k<j;k++) //passing updated data to file
fprintf(file, "%d ", age[k]);
fclose(file);
}