Witam
Tworzę sobie pewien projekt na zajęcia (stos książek), ale mam pewien problem, który od wczoraj nie daje mi spokoju...
Mianowicie po uruchomieniu programu jak podam pierwszy tytuł książki i o wyświetlę to wszystko jest w porządku, ale gdy to samo chcę zrobić z drugim tytułem to wtedy dwa razy wyświetla mi się ten drugi tytuł, gdy wpisuje trzeci tytuł to na wyjściu ma 3 razy ten trzeci tytuł itd.
Co jest tego przyczyną? Jak to naprawić? Jakieś sugestie?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stos {
char *key;
struct stos *next;
};
struct stos *dodaj(struct stos *stack, char *tytul) {
struct stos *tmp = (struct stos *)malloc(sizeof(struct stos));
tmp->key = tytul;
tmp->next = stack;
stack = tmp;
return stack;
}
void wyswietl(struct stos *stack) {
if(stack == NULL)
printf("Stos jest pusty.\n");
else
while(stack != NULL) {
fputs(stack->key, stdout);
stack = stack->next;
}
}
int main(int argc, char *argv[]) {
struct stos *stack = NULL;
char *tytul;
char znak[100];
int rozkaz;
while(1) {
printf("\nOpcja wyboru (1-dodaj dane | 3-wyswietl dane): \n");
printf("Wybor = ");
scanf("%d", &rozkaz);
system("cls");
switch(rozkaz) {
case 1:
{
printf("Podaj tytul ksiazki:\n");
fflush(stdin); //czyszczenie bufora
tytul = fgets(znak, 100, stdin);
stack = dodaj(stack, tytul);
}break;
case 3:
{
wyswietl(stack);
}break;
default:
printf("Zla opcja wyboru. Wprowadz poprawna.\n");
break;
}
}
system("PAUSE");
return 0;
}