[c] wyświetlanie cstringa

0
void showList(const Wezel* head)
 {
    if (!head)
    {
        printf("Lista jest pusta\n");
        return;
    }
	int i=0;
    while (head != NULL)
    {
		if(i>0)
		{
			printf("%s\n",head->imie);
			printf("%s\n",head->nazwisko);
			printf("nr.mieszkania: %d\n",head->nr);
			printf("nr.telefonu: %d\n",head->tel);
		}
		head = head->next;
		i++;
    }
    printf("\n");
}

Witam. Mam kod powyżej i nie wiem dlaczego wyświetla mi jakieś śmieci(w imie i nazwisko) zamiast prawidłowego wyniku..

0

imie i nazwisko to zmienne char[20];
w innym miejscu w kodzie wynik jest poprawny, tylko tutaj się sypie..

0
Wezel* addToList(Wezel *Lista)
{
	char a[20],b[20];
	int c,d;
	printf("\npodaj imie\n:");
	scanf("%s",a);
	printf("podaj nazwisko\n:");
	scanf("%s",b);
	printf("podaj nr. telefonu\n:");
	scanf("%d",&c);
	printf("podaj nr. mieszkania\n:");
	scanf("%d",&d);
	
	Wezel *wsk, *nowy;
	wsk = Lista;
	while (wsk->next != NULL)
		wsk = wsk->next;
	nowy = new Wezel;

	nowy->nr=d;
	nowy->tel=c;
	strcpy(Lista->imie,a);
	strcpy(Lista->nazwisko,b);
	nowy->next = NULL;
	wsk->next = nowy;
    return Lista;
}

Gdy wyświetlam na końcu dodawania do listy jest ok.. Dlaczego w showList jest błąd??

0

na moje oko musisz dynamicznie alokować pamięć dla tablic a i b, gdyż po wyjściu z tej funkcji miejsce zajmowane przez nie jest zwalniane

0
	Lista->imie = new char[20];
	Lista->nazwisko = new char[20];

tak bynajmniej nie działa..

0

Bo w C nie ma new. Użyj malloc().

1 użytkowników online, w tym zalogowanych: 0, gości: 1