blad w kodzie (C, struktury, listy)

0

Witam, mam nastepujacy kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

struct element {
       char imie_nazwisko[50];
       char plec[9];
       int wiek;
       struct element *next;
};

struct element * wstaw(struct element * l, char in, char p, int w);
void wypisz(struct element * l);

int main(void) { 
    char in[50];
    char p[9];
    int w = 0;
    struct element * lista = NULL;
    printf("\nPodaj imie i nazwisko: ");
    fflush(stdin);
    scanf("%s", in);
    printf("\nPodaj plec: ");
    fflush(stdin);
    scanf("%s", p);
    printf("\nPodaj wiek: ");
    fflush(stdin);
    scanf("%i", &w);
    lista = wstaw(lista, in, p, w);


    wypisz(lista);
    system("pause");
    return 0;
    
}   

struct element * wstaw(struct element * l, char in, char p, int w) {
     struct element * nowy;
     nowy = (struct element *) malloc(sizeof(struct element));
     if(nowy == NULL) {
             printf("\n\n\n!BLAD!\n\n\n");//BLAD
     }
     (*nowy).imie_nazwisko = in;
     (*nowy).plec = p;
     (*nowy).wiek = w;
     (*nowy).next = l;
     return nowy;
}
     
void wypisz(struct element * l) {
     struct element * wsk = l;
     printf("Dane osob: \n\n");
     while (wsk != NULL) {
           printf("Imie i nazwisko: %c \n", (*wsk).imie_nazwisko); 
           printf("Plec: %c \n", (*wsk).plec);
           printf("Wiek: %i \n\n", (*wsk).wiek);
           wsk = (*wsk).next;
     }
}  

niestety przy kompilacji mi wyskakuje blad, czy ktos jest mi w stanie poradzic jak go naprawic?

Blad to:

-sciezka do pliku- In function int main()': 30 -sciezka do pliku- invalid conversion from char*' to char' 30 -sciezka do pliku- initializing argument 2 of element* wstaw(element*, char, char, int)'
30 -sciezka do pliku- invalid conversion from char*' to char'
30 -sciezka do pliku- initializing argument 3 of element* wstaw(element*, char, char, int)' -sciezka do pliku- element* wstaw(element*, char, char, int)':
45 -sciezka do pliku- incompatible types in assignment of char' to char[50]'
46 -sciezka do pliku- incompatible types in assignment of char' to char[9]'

bardzo prosze o pomoc, jeszcze duzo pisania przede mna i mysle, ze z reszta sobie poradze, jednak najpierw musze rozwiazac ten problem na poczatku...
prosze o szybka odpowiedz.

0

bo w deklaracji funkcji wstaw masz jako parametry pojedyncze znaki char a nie tablice znaków.

Idąc dalej w tej funkcji masz podstawianie:

(*nowy).imie_nazwisko = in;
(*nowy).plec = p;

C tak nie działa - musisz użyć funkcji strcpy().
Zamiast pisać *(nowy).imie_nazwisko możesz napisać nowy->imie_nazwisko.

Więcej nie sprawdzałem Twojego kodu.

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