• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

łańcuchy znakowe - c

Object Storage Arubacloud
0 głosów
174 wizyt
pytanie zadane 13 lipca 2015 w C i C++ przez rafalmagician Obywatel (1,320 p.)

Czy może ktoś wyjaśnić co tu robię źle ??

void slodycz(struct BATONIK *snack)
{
    (*snack).marka = "Mocha Munch";
    (*snack).waga = 2.3;
    (*snack).kalorie = 350;
}

Tzn. wiem jak zrobić żeby użytkownik wprowadził całe zdanie i później je wypisać ale nie wiem jak podczas inicjalizacji zrobić tak żeby zdanie było odrazu przypisane. Co muszę zmienić w tym kodzie bo mam taki błąd:

2 odpowiedzi

+2 głosów
odpowiedź 13 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Mógłbyś podać definicje struktury batonika?
komentarz 13 lipca 2015 przez rafalmagician Obywatel (1,320 p.)
struct BATONIK
{
    char marka[15];
    float waga;
    int kalorie;
};

A w mainie:

int main()
{
    struct BATONIK snack;

    slodycz(&snack);

    return 0;
}

 

komentarz 13 lipca 2015 przez Dorion300 Szeryf (90,250 p.)

Zmień na:

struct BATONIK
{
    char * marka;
    float waga;
    int kalorie;
};

 

komentarz 13 lipca 2015 przez rafalmagician Obywatel (1,320 p.)
Działa ale mam pytanie dlaczego tak ??
komentarz 13 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Ponieważ jak mamy zadeklarowaną statycznie tablicę z 15 schowków to nie można wywalić całą tą tablicę i podać nową z inną ilością schowków.

Polecam o gólnie używać stringi.

O wiele mniej roboty trzeba wykonać.
komentarz 13 lipca 2015 przez rafalmagician Obywatel (1,320 p.)
Teraz już rozumiem. Dzięki :)
0 głosów
odpowiedź 13 lipca 2015 przez nowyfolder Mądrala (7,250 p.)
edycja 13 lipca 2015 przez nowyfolder

Do tablicy nie można po prostu przypisać wskaźnika - bo tym jest "Mocha Munch" - stałym wskaźnikiem na napis.
Aby zapisać C-string do tablicy użyj funkcji strcpy z biblioteki string(c++ - cstring)

char * strcpy ( char * destination, const char * source );
Użycie(Zwróć uwagę na operator -> - przydatny jeśli mamy wskaźniki na struktury lub klasy):
strcpy(snack->marka, "Mocha Munch");

Podobne pytania

0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 5 kwietnia 2020 w C i C++ przez gallaxxyy Początkujący (270 p.)
+1 głos
2 odpowiedzi 190 wizyt
0 głosów
3 odpowiedzi 410 wizyt
pytanie zadane 17 grudnia 2020 w C i C++ przez ******** Początkujący (260 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...