Witam. Prosiłbym o wyjaśnienie, dlaczego funkcja nie działa jak powinna. Oto program (nie jest jeszcze dokonczony, chce sie dowiedziec co robie nie tak przy korzystaniu z gets). Efekt odpalenia programu rowniez zalaczam. Chodzi o to, ze program nie czeka na podanie ciagu znakow, tylko od razu przeskakuje do Podaj tytul. Wiem, ze to podstawy jednak nie moge sie dokopac tego w googlach. Z gory wielkie dzieki.
#include <stdio.h>
#include <stdlib.h>
struct ksiazka{
char autor[30], tytul[50];
int rokWydania, liczbaStron;
double cena;
char wypozyczona;
int ileWypozyczen;
};
void wypelnienie(int n, struct ksiazka *tab)
{
int i;
for(i=0;i<n;i++)
{
printf("Podaj autora: \n");
gets(tab[i].autor);
printf("Podaj tytul:\n");
gets(tab[i].tytul);
printf("Podaj liczbe stron:\n");
scanf("%d",&tab[i].liczbaStron);
printf("Podaj rok wydania:\n");
scanf("%d",&tab[i].rokWydania);
printf("Podaj cene oraz liczbe wypozyczen:\n");
scanf("%lf %d",&tab[i].cena,&tab[i].ileWypozyczen);
}
}
int main()
{
int n;
struct ksiazka *tabela;
printf("Ile ksiazek chcesz wprowadzic?\n");
scanf("%d",&n);
tabela=malloc(n*sizeof(struct ksiazka));
wypelnienie(n,tabela);
}