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

C++ sprawdzenie czy łańcuch w strukturze jest pusty

0 głosów
1,188 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez CleaverMan Nowicjusz (140 p.)

Mam problem ze sprawdzeniem czy łańcuch jest pusty. Tyko łańcuch jest elementem tablicy struktur 

struct student {
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};

w funkcji w której muszę to wykorzystać podane jest wskaźnik na tablice struktur

int getinfo(student pa[], int n)

jak mam sprawdzić czy element struktury 'fullname'  jest pusty(w aukcji getInfo) po uprzednim pobraniu danych cen.get?

2 odpowiedzi

+1 głos
odpowiedź 10 listopada 2019 przez j23 Mędrzec (195,220 p.)
if (pa[x].fullname[0] == 0) {
    // pusty
}

 

komentarz 11 listopada 2019 przez tkz Nałogowiec (42,040 p.)
#include <iostream>
struct student {
    char fullname[12];
    char hobby[12];
    int ooplevel;
};
int main()
{
    student pa;
    if (pa.fullname[0] == 0) 
        std::cout<<"pusty";

    return 0;
}

Tylko, że ten sposób nie działa. 

komentarz 11 listopada 2019 przez j23 Mędrzec (195,220 p.)

Działa, tylko struktura powinna być wyzerowana/zainicjalizowana. Pusty c-string to po prostu string z wartością zero na początku. W twoim kodzie pa zawiera śmieci i dlatego nie działa.

0 głosów
odpowiedź 11 listopada 2019 przez mmarszik Mądrala (7,390 p.)
Ten sposób działa, tylko w C tak naprawdę nie ma żadnych stringów, ani żadnych typów danych, są tylko konwencje. Konwencja dla stringa jest taka, że to ciąg bajtów począwszy od jakiegoś adresu w pamięci, a skończywszy na adresie pod którym jest zero. Jeśli zero jest zaraz pod adresem początkowym, to łańcuch jest pusty. Jeśli zera tam nie wpisałeś, to są tam przypadkowe dane, ciesz się że nie zadziałało, bo mogło u Ciebie zadziałać, a na egzaminie - nie.

Pozdrawiam
komentarz 11 listopada 2019 przez CleaverMan Nowicjusz (140 p.)
edycja 11 listopada 2019 przez CleaverMan

Prototyp funkci to 

int getinfo(student pa[], int n)

czyli trzeba pracować na pa->fullname? Czyli jak mam wyzerować te dane?

komentarz 11 listopada 2019 przez tkz Nałogowiec (42,040 p.)
#include <iostream>
struct student {
    char fullname[12] = ""; //char buf[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    char hobby[12] = "";
    int ooplevel;
};
int main()
{
    student pa;
    if (pa.fullname[0] == 0) 
        std::cout<<"pusty";
 
    return 0;
}

 

komentarz 11 listopada 2019 przez mmarszik Mądrala (7,390 p.)
Co to jest zmienna w języku C / C++ ?

Podobne pytania

0 głosów
2 odpowiedzi 1,315 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
2 odpowiedzi 293 wizyt
pytanie zadane 18 grudnia 2017 w C i C++ przez pierdonauta Nowicjusz (200 p.)
0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 18 września 2017 w C i C++ przez Sic Dyskutant (8,510 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2510p. - DziarnowskiJ
  3. 2361p. - Łukasz Piwowar
  4. 2340p. - CC PL
  5. 2317p. - raydeal
  6. 2300p. - Adrian Wieprzkowicz
  7. 2243p. - rucin93
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...