Hirdetés

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

  • Jester01
    veterán

    No alakítottam rajta egy kicsit.

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

    }
    buffer++;
    }
    return buffer;
    }
    return NULL;
    }

    Így most elvileg végigmegy a sztringen karakterenként a lezáró nulláig. Közben ha talál \n-et, akkor megnézi, hogy a rá következő karakter lezáró 0-e.

    Egyébként van valami ordító hibám? Mert eddig csak és kizárólag segfaultot kaptam az assert teszteknél.

    Ez megint nem jó, mert a ++ az ugyebár megnöveli a változót. Tehát ha megtalálta a \n-t és a rákövetkező byte a lezáró nulla, akkor azt önmagával akarja felülírni. Ha viszont nem nulla, akkor abban a lépésben a buffer kétszer lesz növelve. A visszatérési érték pedig továbbra is rossz, mivel akkor a buffer már a string végére fog mutatni.

    Embertelenül túlbonyolítod a kérdést. Összesen annyit kell csinálni, hogy megkeresed a végjelet és megnézed, hogy az előtte lévő karakter \n-e és ha igen, akkor azt felülírod.

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