W moim kodzie napisałam funkcje wybrane która ma zapisywać do pliku tylko te elementy struktury dla których pole rok produkcji jest większe niż podana przez użytkownika wartość prog. Tylko że coś tu nie działa. Poniżej wstawiam mój kod prosze o wskazówki.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct aut_o{
char model[40];
int rok_produkcji;
float pojemnosc_silnika;
};
void wybrane(int prog,char plik_wy,struct aut_o *glowa){
FILE *plik;
if((glowa->rok_produkcji)>prog){
plik=fopen(plik_wy,"a+");
fprintf(plik,"%s %i %f\n",glowa->model,&(glowa->rok_produkcji),&(glowa->pojemnosc_silnika));
}
else
printf(" ");
fclose(plik);
}
main(){
int i;
struct aut_o *wsk,*glowa=NULL;
char plik_we[20];
int prog;
char plik_wy[20]="konkrety.txt";
printf("Podaj plik wejsciowy: ");
scanf("%s",plik_we);
printf("Podaj progowa wartosc roku produkcji: ");
scanf("%d",&prog);
FILE *stream;
if((stream=fopen(plik_we,"r"))==NULL)
exit(1);
while(!feof(stream)){
if(glowa==NULL)
glowa=wsk=malloc(sizeof(struct aut_o));
fscanf(stream,"%s %i %f\n",wsk->model,&(wsk->rok_produkcji),&(wsk->pojemnosc_silnika));
printf("zapisany rekord to: %s %i %.2f\n",wsk->model,wsk->rok_produkcji,wsk->pojemnosc_silnika);
}
fclose(stream);
wybrane(prog,plik_wy,glowa);
getchar();
return 0;
}