S.Prata 8.2 wskaźnik do typu char

0

Witam, dlaczego Snickers nie wyświetla domyślnej nazwy?

#include <iostream>

struct Batonik {
    char name[20];
    double weight;
    int calories;
};

void set(Batonik&, char* wsk = "Millenium", double waga = 2.85, int kalorie = 350);
void show(Batonik&);

int main(int argc, char** argv)
{
    Batonik KitKat;
    Batonik Snickers;
    std::cout << "Podaj nazwę: ";
    char* wsk = KitKat.name;
    std::cin >> wsk;

    std::cout << "Podaj wagę: ";
    double waga;
    std::cin >> waga;

    std::cout << "Podaj kalorie: ";
    int kalorie;
    std::cin >> kalorie;
    set(KitKat, wsk, waga, kalorie);
    show(KitKat);
    std::cout << std::endl;
    set(Snickers);
    show(Snickers);
    return 0;
}

void set(Batonik& Mars, char* wsk, double waga, int kalorie)
{

    wsk = Mars.name;
    Mars.weight = waga;
    Mars.calories = kalorie;
}

void show(struct Batonik& Mars)
{
    std::cout << "Podane dane:\n";
    std::cout << "Marka: " << Mars.name << std::endl;
    std::cout << "Waga: " << Mars.weight << std::endl;
    std::cout << "Kalorie: " << Mars.calories << std::endl;
}

0

Nie powinno wyświetlić "Millenium"?

1

Bo masz

...
wsk = Mars.name;
...

zamiast

#include <cstring>
...
strcpy(Mars.name, wsk);
...
0

Z Mars.name = wsk wyskakuje błąd "error: incompatible types in assignment of 'char*' to 'char[20]'

0

Już wszystko działa. Dzięki!!!

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