Hirdetés

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

  • Gyuri16
    senior tag

    Uhh tényleg.

    char *strChomp(char *buffer)
    {
    if (buffer && *buffer) {
    while (*buffer != '\0') {
    buffer++;
    }
    if (*buffer-- == '\n'){
    *buffer = '\0';
    }
    return buffer;
    }
    return NULL;
    }

    Most ha minden igaz, elmegy a végére, ha odaért, megnézi a lezáró nulla előtti karaktert, és ha az \n, akkor átírja \0-ra.

    Nekem csak vissza kell adni a módosított, vagy az eredeti stringet, ha nem volt \n a végén. Ilyenkor a *buffer-t hogyan viszem vissza a kezdeti pozícióba? Ez most elég amatőr kérdés lesz, de gondolom nem egy "ellenkező irányú" while ciklussal lépdeljek vissza.

    ez nem jo:
    if (*buffer-- == '\n'){
    a -- csak a feltetel kiertekelese utan fog vegrehajtodni, ezert ez az if sose teljesul (mindig 0 lesz a buffer erteke amikor ideer). ezert a fuggvenyed mindig az utolso (nem null) karakterre mutato pointert ad vissza.

    Ilyenkor a *buffer-t hogyan viszem vissza a kezdeti pozícióba?
    ne a buffer pointert vidd vissza, hanem hasznalj egy masikat a mozgasra (ahogy azt.Jester01 mar irta). a fuggvenyed elejen csinalj egy ilyet:

    char * q = buffer;

    es azutan a q-val dolgozz, a vegen petig visszaterhetsz a bufferral

    mas:
    mikozben ezt probaltam elojott a kovetkezo hiba, miert segfaultol a devcpp erre?
    char * a = "abcd";
    *a = 'b';

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