Hej! (:
Chyba niezupełnie rozumiem wskaźniki do funkcji, mam za zadanie napisać program, który ma zapisywać liczby zespolone do pliku tekstowego i binarnego z użyciem wskaźników. Napisałam właściwie dopiero początek, ale nie mam pojęcia co zrobiłam źle, że wyskakuje błąd (miejsce zaznaczone komentarzem).
Kod:
#include <stdio.h>
#include <stdlib.h>
/*struct zespolona{
float re;
float im;
};
struct zespolona_modul{
struct zespolona;
float modul;
};
*/
float los(void){
srand(time(NULL));
return (rand()%20);
}
void los_bin(int n){
int i;
FILE *plik;
plik=fopen("zesp_bin", "wb");
if(plik==NULL){
printf("Blad odczytu pliku\n");
exit(5);
}
for(i=0;i<n;i++)
fwrite(los, sizeof(float), 1, plik);
fclose(plik);
}
void los_text(int n){
int i;
FILE *plik;
plik=fopen("zesp_txt", "w");
if(plik==NULL){
printf("Blad odczytu pliku\n");
exit(5);
}
for(i=0;i<n;i++)
fprintf(plik, "%f\n", los());
fclose(plik);
}
void bin_or_text(void(*wfun), int n){ // i tu jest blad.
(*wfun)(n);
}
int main(void){
int n; // ilosc liczb
char ch;
void (*wfun)(int);
puts("Podaj ilosc liczb, ktorych modul chcesz policzyc.");
scanf("%d", &n);
puts("Dzialac na pliku binarnym(wpisz 'B'), czy tekstowym ('T')?");
scanf("%s", &ch);
if(ch=='B'){
wfun=los_bin;
}
else if (ch=='T'){
wfun=los_text;
}
else {puts("Nie wybrano opcji"); exit(1);}
bin_or_tekst(wfun, n);
printf("Wylosowano %d liczb i zapisano do pliku");
return 0;
}