Cześć, piszę program w C, coś w stylu bazy danych. Chodzi mi o to aby dało się dodawać, wyświetlać, usuwać i sortować elementy w bazie. Program jest na takim etapie, że dodaje elementy i odczytuje - i tutaj mam problem, bo funkcja wyświetla mi tylko jeden element, a nie wszystkie które zapisałem w pliku. Tutaj moje pytanie, jak to naprawić? Z góry dzięki za pomoc.
#include <stdio.h>
#include <stdlib.h>
int Key;
struct lib
{
char Title[50];
char Author[50];
int PubDate;
char Type[50];
int Score;
} Books;
void ShowStatistics()
{
}
void DeleteElement()
{
}
void ShowHelp()
{
}
void AddElement()
{
struct lib base;
char c;
database = fopen("dane.txt", "w");
system("CLS");
do
{
while(getchar()!='\n');
printf("\n..:: DODAJ NOWĄ POZYCJĘ ::..\n");
printf("Podaj tytuł książki: ");
gets(base.Title);
printf("Podaj autora : ");
gets(base.Author);
printf("Podaj gatunek: ");
gets(base.Type);
printf("Podaj datę wydania: ");
scanf("%d", &base.PubDate);
printf("Oceń książkę w skali 1-10: ");
scanf("%d", &base.Score);
fwrite ( &base, sizeof(base), 1, database );
printf ("::::::::::::::::::::::::::::::::::::::::\n");
printf ("Czy chcesz dodać kolejną pozycję? [Y/N].\n");
printf ("::::::::::::::::::::::::::::::::::::::::\n");
scanf ("%s", &c);
}while ( c == 'Y' || c == 'y' );
fclose( database );
}
void ShowElements()
{
FILE *database;
struct lib base;
int i = 0;
printf ( "-------------------------------------------------------\n" );
printf ( "Tytył książki | Autor | Gatunek | Rok wydania | Ocena |\n" );
printf ( "-------------------------------------------------------\n" );
database = fopen( "dane.txt", "r+b" );
fseek ( database, i*sizeof( base ), 1 );
fread( &base, sizeof( base ), 1, database );
printf ( "%s || %s || %s || %d || %d \n\n", base.Title, base.Author, base.Type, base.PubDate, base.Score );
i++;
fclose ( database );
}
void EndProgram()
{
system("clear");
printf("Kończę program...\n");
{sleep(1);}
system("clear");
}
void PrintMenu(){
printf ("\n..:: MENU ::..\n");
printf ("[1] Wyświetl wszystkie pozycje.\n");
printf ("[2] Dodaj nową pozycję.\n");
printf ("[3] Usuwanie elementów.\n");
printf ("[4] Wyświetl statystyki biblioteki.\n");
printf ("[5] Pomoc.\n");
printf ("[6] Zakończ program.\n");
printf ("\n::::::::::::::::::::::::::::::::::\n");
printf ("Wybierz interesującą Cię akcję:\n");
printf ("::::::::::::::::::::::::::::::::::\n");
scanf("%d", &Key);
switch ( Key )
{
case 1:
system("clear");
ShowElements();
break;
case 2:
AddElement();
system("clear");
PrintMenu();
break;
case 3:
DeleteElement();
break;
case 4:
ShowStatistics();
break;
case 5:
ShowHelp();
break;
case 6:
EndProgram();
break;
default:
printf ("Wybrana opcja nie jest dozwolona.\n");
break;
}
}
int main()
{
PrintMenu();
}