Cześć. Mam taki o to kod programu. W sumie kod działa ale po wykonaniu programu wyskakuje błąd... Może ktoś z was doświadczonych znajdzie problem... Z góry dzięki.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#include<ctype.h>
#define N 5
struct para
{
char napis[10];
int rok;
char miesiac[10];
float cena;
};
struct dwa
{
struct para *wsk;
int ile;
};
void wypisanie(struct para *wsk, int l)
{
for (int i = 0; i < l; i++)
{
printf("Nazwa: %s Rok: %d Miesiac: %s Cena: %.2f\n", wsk[i].napis,wsk[i].rok,wsk[i].miesiac,wsk[i].cena);
}
}
struct dwa wiersz(FILE* stream)
{
int l=0;
while (!feof(stream))
{
struct para p;
fscanf(stream, "%s %d %s %f",p.napis,&p.rok,p.miesiac,&p.cena);
l++;
}
rewind(stream);
struct para *tab = (struct para *)malloc(l * sizeof(struct para*));
for(int i=0;i<l;i++)
{
fscanf(stream, "%s %d %s %f", tab[i].napis, &tab[i].rok, tab[i].miesiac, &tab[i].cena);
}
struct dwa cos;
cos.wsk = tab;
cos.ile = l;
return cos;
}
int main()
{
char f[20]; //nazwy pllikow
//char wynik[20];
printf("Prosze podac nazwe pliku z danyymi(nazwa+rozszerzenie) :");
scanf("%s", f);
/*printf("Prosze podac nazwe pliku wynikowego(nazwa+rozszerzenie) :");
scanf("%s", wynik);*/
putchar('\n\n');
//int fclose(FILE* stream); //plik z danymi otwieranie
FILE* stream;
if ((stream = fopen(f, "r")) == NULL)
{
printf("Pliku z danymi nie udalo sie otworzyc.\n");
return 0;
}
else
printf("Plik z danymi udalo sie otworzyc.\n");
//int fclose(FILE* stream1); //plik wynikowy otwieranie
//FILE* stream1;
//if ((stream1 = fopen(wynik, "w")) == NULL)
//{
// printf("Pliku z wynikami nie udalo sie otworzyc.\n");
// return 0;
//}
//else
// printf("Plik z wynikami udalo sie otworzyc.\n");
////////////////////////////////////////////////////////////////////////////////
putchar('\n\n');
struct dwa cos=wiersz(stream); //wywolanie funkcji 1
wypisanie(cos.wsk,cos.ile);
/* for(int i=0;i<cos.ile; i++)
fprintf(stream1, "%s %d %s %.2f\n", cos.wsk[i].napis, cos.wsk[i].rok, cos.wsk[i].miesiac, cos.wsk[i].cena);*/
putchar('\n\n');
/////////////////////////////////////////////////////////////////////////////////
if (fclose(stream)) //zamykanie pliku z danymi
printf("Plik z danymi nie zostal zamkniety.\n");
else
printf("Plik z danymi zostal zamkniety.\n");
//if (fclose(stream1)) //zamykanie pliku z wynikami
// printf("Plik z wynikami nie zostal zamkniety.\n");
//else
// printf("Plik z wynikami zostal zamkniety.\n");
printf("\nAutor: Bartosz Rozanski.\n");
free(cos.wsk);
return 0;
}