Witam
W programowaniu bardzo często mam problem z wczytywaniem wielu rzeczy pod rząd. Tworzę tablicę znaków char[], a następnie w pętli dodaję wczytywanie przez użytkownika do tej tablicy. W przykładzie, który zamieszczam użytkownik wprowadza imię (ono później przekazywane jest do kolejki), a następnie decyduje czy chce dodać kolejną osobę. Niestety za tym drugim razem (oraz każdym kolejnym) wyświetla się komunikat "wprowadź imię" po czym od razu bez możliwości wpisania czegokolwiek wyrzuca późniejszy komunikat "Czy chcesz dodać kolejną osobę ? Y/N", gdzie już jest możliwość dokonania wyboru. Problem więc jest w tym, że użytkownik nie może podać imienia. Myślę, że dzieje się tak ponieważ cały czas chce jakby nadpisywać ten sam łańcuch znaków, czy jest jakieś rozwiązanie ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define ILOSC 100
struct kolejka
{
int id;
char imie[ILOSC];
struct kolejka *next;
};
struct wskazniki
{
struct kolejka *head,*tail;
};
void dodaj(struct wskazniki *fifo,int id, char *imie,int dlugosc)
{
struct kolejka *new_kolejka = (struct kolejka*)malloc(sizeof(struct kolejka));
int i=0;
if(new_kolejka)
{
new_kolejka->id = id;
for(i = 0;i < dlugosc;i++)
{
new_kolejka->imie[i] = imie[i];
}
new_kolejka->imie[dlugosc] = '\0';
new_kolejka->next = NULL;
if(fifo->head == NULL)
{
fifo->head = fifo->tail = new_kolejka;
}else
{
fifo->tail->next = new_kolejka;
fifo->tail = new_kolejka;//fifo->tail=fifo->tail->next;
}
}
}
int main()
{
struct wskazniki fifo = {NULL,NULL};
char imie[ILOSC];
int i,dlugosc;
char wybor;
do
{
puts("Wprowadz imie");
fgets(imie,ILOSC,stdin);
dlugosc=strlen(imie);
dodaj(&fifo,i,imie,dlugosc-1);
i++;
printf("Czy chcesz dodac kolejna osobe ? Y/N\n");
wybor = getchar();
system("cls");
}while(wybor == 'Y');
return 0;
}