Wpisanie elementów do tablicy struktur.

0

Mam taką strukturę:

 
       struct pisarz{
       int rok_urodzenia;
       char imie[20];
       char nazwisko[20];
       };  

Mam w main zadeklarować tablicę o trzech elementach typu pisarz, więc robię to tak:
pisarz autorzy[3];

A następnie wpisać do niej te 3 elementy, powiedzmy, że zwykłym przypisaniem i próbuję to zrobić tak:

autorzy[0].rok_urodzenia=1920;
autorzy[0].imie="Stanislaw";

Przy samym roku jest okej, ale przy wpisywaniu imienia kompilator stwierdza, że
[Error] incompatible types in assignment of 'const char[10]' to 'char[20]'

Czyli zrozumiałem, że zadeklarowałem 20 znakowy ciąg, a wpisałem tylko 10. Więc trzeba zadeklarować dynamicznie czy coś w podobie? Ale tego już nie potrafię : )

1

Jeżeli koniecznie c-string: http://www.cplusplus.com/reference/clibrary/cstring/strcpy/

W C++ powinieneś użyć std::string.

0

A jeśli nie koniecznie c-string, to jak byś inaczej zrobił?

0

Teraz chciałbym do tablicy tab, która jest tablicą 4 elementów struktury Ksiazka wpisać kolejno 4 książki (rok wydania, tytuł i autora), ale autor ma być pobierany z tablicy Autorzy, która wygląda tak jak wyżej.

struct ksiazka{
       char tytul[20];
       int rok_wydania;
       pisarz* autor;
       };  
tab[0].rok_wydania=1912;
	strcpy(tab[0].tytul, "W pustyni i w puszczy");
	tab[0].autor=  ?  ;

I nie wiem jak do tego elementu tab[0].autorzy przypisać całą pozycję ze struktury.

1
tab[0].autor=strdup("Ja");
0

Obawiam się, że nie zrozumiałem : )

struct pisarz{
       int rok_urodzenia;
       char imie[20];
       char nazwisko[20];
       };        
      
struct ksiazka{
       char tytul[20];
       int rok_wydania;
       pisarz autor;
       };      

void getPisarz(pisarz p){
            cout<<p.imie<<" "<<p.nazwisko<<", urodzony w "<<p.rok_urodzenia<<" roku"<<endl;
                 }   
         
void getKsiazka(ksiazka k){
     cout<<"Tytul: "<<k.tytul<<" - rok wydania "<<k.rok_wydania<<", autor: "; // -- ?
     }

Po "autor:" chcę wyświetlić jakby getPisarz (czyli imię, nazwisko i rok urodzenia).

Tak są wypełnione tablice:

autorzy[0].rok_urodzenia=1920;
    strcpy (autorzy[0].imie, "Stanislaw");
    strcpy (autorzy[0].nazwisko, "Lem");
 
strcpy(tab[0].tytul, "W pustyni i w puszczy");
    tab[0].autor=autorzy[0];
    tab[0].rok_wydania=1912; 

Tak wyświetlam wszystko na końcu:

getKsiazka(tab[0]); 

Albo źle zrozumiałem zadanie, albo to tak głupie.

0

void getKsiazka(ksiazka k){
cout<<"Tytul: "<<k.tytul<<" - rok wydania "<<k.rok_wydania<<", autor: "; // -- ?
getPisarz(k.autor);
}

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