Hirdetés

Új hozzászólás Aktív témák

  • Korcsii
    őstag

    Köszi, próbálkozom. A tömbök kezelését még nem nagyon értem. Ha átmásolom az egyik tombből a másikba az 5 karakternél hosszabb szavakat, akkor az hogyan helyezkedik el a tömbben? Hogy tudom számolni vagy növelni a szavak számát? Úgy tanultam, hogy 1 tömbelem 1 karaktert tartalmaz.
    pl: a tömbök indexei:
    tomb[0] = 'h';
    tomb[1] = 'e';
    tomb[2] = 'l';
    tomb[3] = 'l';
    tomb[4] = 'o';
    tomb[5] = '\0'; szóköz vagy sortérésnél beírja a 0 -a karaktert?

    ....és hogy folytatódik tovább?
    így?
    tomb[6] = 'm';
    tomb[7] = 'i';
    tomb[8] = 'z';
    tomb[9] = 'u';
    tomb[10] = '\0';

    ..és ezt hogy lehet kiíratni? Vagy nem jól gondolom az egészet?

    a \0 egy speciális karakter (NULL karakternek is hívják), szerepe, hogy jelezze a string végét (miért jó, azt csak akkor érted meg igazán, amikor nem engedik meg a string.h használatát :D)

    szóval egy char tömbben (stringben) csak egyszer szerepelhet, bár tárolhatsz mögötte bármit, meg is jegyzi, de nem fogja kiírni, mert a kiírás is \0-ig történik...

    strcat-tal lehet őket összefűzni, vagy ha egy mondatot akarsz egyben beleolvasni, akkor a szóközt is beleveszed, etc...

    scanf("[^\n]",string);
    pl én ezt szerettem anno, mindent beolvas addig, amíg sortörést nem talál... DE ez csak akkor alkalmazható, ha el is fér a string tömbben, azaz ha a feladat leírja, hogy márpedig csak ekkora meg ekkora lehet...

    a másik változatot:
    int i = 0;
    while((c = getchar()) != '\n') string[i++] = c;
    string[i] = '\0';

    a probléma ugyanaz, ha nem fér el a megadott helyen (regényt adsz neki), akkor elszáll a program, de ha meg van adva a méret, használható...

    ez utóbbiból azonban ki lehet indulni, ha dinamikusan akarjuk a memóriát lefoglalni: legjobb megoldás talán az, hogy foglalunk x méretűt, ha elérjük az x-et, foglalunk még egyszer akkorát, aztán a legvégén, amikor már az egész string megvan, megnézzük a méretét (vagy vesszük az i értékét), foglalunk egy akkorát, és belemásoljuk - így pont akkora helyet foglalunk neki, amekkora...

Új hozzászólás Aktív témák