no cóż a moje marne wypociny nie spełniają tych wymagań .zawiesza się gdy próbuje wpisać jakas ksiazke. nie przechowuje informacji w pliku i nie mam zielonego pojęcia jak można usunąć którąś z pozycji.więc mam taka prośbe by pomóc mi wpaść na odpowiedni trop.
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char tytul[40];
char autor[30];
int rok_wyd;
char gatunek[20];
int ocena;
}
book;
void wypisz (book w)
{
printf("Tytul: %s\n", w.tytul);
printf("Autor: %s\n", w.autor);
printf("Rok wydania: %d\n", w.rok_wyd);
printf("Gatunek: %s\n", w.gatunek);
printf("Ocena: %d\n", w.ocena);
}
book zapisz()
{
book z;
printf("Podaj tytul: ");
gets(z.tytul);
printf("Podaj autora: ");
gets(z.autor);
printf("Podaj rok wydania: ");
scanf("%d",z.rok_wyd);
printf("Podaj gatunek: ");
gets(z.gatunek);
printf("Ocen: ");
scanf("%d", z.ocena);
return z;
}
int main()
{
FILE*do_zapisu;
do_zapisu=fopen("ksiazki", "w");
int n, i=0, c=0;
char znak;
book a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, d;
book tab[]={a1, a2, a3, a4, a5, a6, a7, a8, a9, a10};
do
{
printf("Chcesz wpisac nowy egzemplarz <t/n> \n");
znak=getch();
if(znak=='t'|| znak=='T')
{
d=tab[i];
d=zapisz();
i++;
};
c++;
if(c==10)
{ printf("Nie mozesz wpisac egzemplarza z powodu pelnaj pamieci");
break;};
}
while(znak=='t'|| znak=='T');
fwrite(&a1, sizeof(book), 10, do_zapisu);
fclose(do_zapisu);
do
{
printf("czy chcesz zobaczyć ktoras z pozycji <t/n> \n");
znak=getch();
if(znak=='t' ||znak=='T')
{
printf("który numer z pozycji czy wszystkie, gdzie wszystkie to 11, wypisac : %d/n");
switch(n)
{
case '1':wypisz(a1); break;
case '2':wypisz(a2); break;
case '3':wypisz(a3); break;
case '4':wypisz(a4); break;
case '5':wypisz(a5); break;
case '6':wypisz(a6); break;
case '7':wypisz(a7); break;
case '8':wypisz(a8); break;
case '9':wypisz(a9); break;
case '10':wypisz(a10); break;
case '11':wypisz(a1); wypisz(a2); wypisz(a3); wypisz(a4); wypisz(a5); wypisz(a6); wypisz(a7); wypisz(a8); wypisz(a9); wypisz(a10);
default: return 0;
}
}
}
while(znak=='t' ||znak=='T');
return 0;
}