Witam mam taki mały problem otóż w mojej strukturze po wywołaniu w menu funkcje dodawania kolejnego rekordu i dodaniu tegoż rekordu funkcja kończy swoje działanie to nie mogę od razu wywołać innej funkcji tylko muszę kliknąć enter żeby while jeszcze raz jakby przeleciał i dopiero wszystko działa poprawnie. Problem ten występuje tylko w funkcjach które dokonują edycji struktury.
Fragmenty kodu ;
Sklep* stworz_element()
{
char x;//x zmienna pomocnicza
Sklep *element;
char bufor1[41], bufor2[41];
char *miejscowosc, *branza;
long int *numer;
int *liczba_p, *godzina_o, *godzina_z;
system("cls");
printf("Podaj miejscowosc: ");
gets(bufor1);
miejscowosc=(char*)malloc(sizeof(char)* (strlen(bufor1)+1));
strcpy(miejscowosc, bufor1);
printf("Podaj branze: ");
gets(bufor2);
branza=(char*)malloc(sizeof(char)* (strlen(bufor2)+1));
strcpy(branza, bufor2);
printf("Podaj numer sklepu: ");
while(scanf("%ld", &numer)==0)
{
puts("Blad danych, podaj numer jeszcze raz");
}
printf("Podaj liczbe pracownikow: ");
while(scanf("%d", &liczba_p)==0)
{
puts("Blad danych, podaj numer jeszcze raz");
}
printf("Podaj godzine otwarcia: ");
while(scanf("%d", &godzina_o)==0)
{
puts("Blad odczytu, podaj numer jeszcze raz");
}
printf("Podaj godzine zamkniecia: ");
while(scanf("%d", &godzina_z)==0)
{
puts("Blad odczytu, podaj numer jeszcze raz");
}
element=(Sklep*)malloc(sizeof(Sklep));
element->next=NULL;
element->dane.numer=numer;
element->dane.miejscowosc=miejscowosc;
element->dane.branza=branza;
element->dane.liczba_p=liczba_p;
element->dane.godzina_o=godzina_o;
element->dane.godzina_z=godzina_z;
return element;
}
//Dodawanie na pocz¹tek listy
void dodaj_sklep(Sklep **head)
{
Sklep *tmp = stworz_element();
if (*head != NULL)
tmp->next = *head;
*head = tmp;
}
void menu(Sklep *head)
{
char i;
do
{
system("cls");
printf("1. Dodaj sklep do bazy.\n");
printf("2. Wyszykaj sklep o podanym numerze.\n");
printf("3. Wyszukaj sklepy o podanej liczbie pracownikow.\n");
printf("4. Wyszukaj sklepy o podanych godzinach otwarcia.\n");
printf("5. Wyszukaj sklepy znajdujacy sie w podanej miejscowosci.\n");
printf("6. Wyswietl liste branzowa\n");
printf("7. Usun liste\n");
printf("8. Usun wybrany sklep z bazy\n");
printf("0. Wyjscie\n\n");
printf("Twoj wybor: ");
i = getchar();
getchar();
if (i == '1') dodaj_sklep(&head);
else if (i == '2') wyswietl_element_numer(head);
else if (i == '3') wyswietl_element_liczba_p(head);
else if (i == '4') wyswietl_element_godziny(head);
else if (i == '5') wyswietl_element_miejscowosc(head);
else if (i == '6') wyswietlanie_listy(head);
else if (i == '7') usun_liste(&head);
else if (i == '8') usuwan_wybrany_element(&head);
} while (i != '0');
}