Cześć,
Muszę napisać bazę danych imitujacą spis płyt CD/DVD, utworzyłem do tego strukturę dynamiczną i porobiłem już takie rzeczy jak dodawanie nowy elementów itp. Napotykam problem przy usuwaniu elementu ze struktury.
Sama struktura wygląda następująco
struct spis
{
char nazwa[ROZM];
char zawartosc[ROZM];
char rodzaj[5];
int rozmiar;
int rok;
struct spis *nast;
};
typedef struct spis sp;
sp *glowny;
sp *biezacy;
sp *poprz;
Mój pomysł na usuwanie elementu ze struktury wygląda następująco
void usun()
{
char naz[ROZM];
int t=1;
int flaga;
sp *pom;
while (t==1)
{
flaga=0;
system("clear");
printf("Podaj nazwe plyty ktora chcesz usunac\n");
fgets(naz, ROZM, stdin);
biezacy=glowny;
while (biezacy!=NULL)
{
if (strcmp(biezacy->nazwa,naz)==0)
{
pom=biezacy->nast;
biezacy->nast=pom->nast;
free(pom);
system("clear");
printf("Oto baza po usunieciu\n");
wypisz();
flaga=1;
}
if(flaga==1) break;
biezacy=biezacy->nast;
}
if(flaga==0) printf("\nPlyta o podanej nazwie nie istnieje\n");
printf("Aby powrocic do wyboru opcji edytowania wybierz 1, w przeciwnym wypadku 2");
while(scanf("%d",&t)!=1 || t<1 || t>2)
{
printf("Bledne dane. Podaj wybór jeszcze raz");
czysc();
}
czysc();
}
}
,
Tylko problem jest taki że owa funkcja usuwa wcześniejszy rekord a nie ten o który mi chodzi. Co jest zrobione źle?