[C] Zmiana pojedynczych znaków w łańcuchu char*


(DarthVader3105) #1

Witam

Mam problem z tą funkcją:

Uint8 setTextBoxContent(TextBox *box, char text[])
{
Uint16 i;

box->content = realloc(box->content, strlen(text)+1);

if(box->isMultiline == false)
{
    for(i = 0; i < strlen(box->content)+1; ++i)
    {
        if(text[i] == '\n')
        {
            text[i] = 32;
        }
    }
}

box->content = text;

return 0;
}

Chcę do zmiennej box->content zapisać dane ze zmiennej text, ale mam problem z zamianą znaków \n na spację, ale nic się nie dzieje, jeśli warunek z if’a jest spełniony. Próbowałem różnych sposobów. Jak mogę te znaki pozamieniać?


(hindus) #2

Używasz debuggera?


(DarthVader3105) #3

Nie, nie umiem i uważam, że to mi nie potrzebne… ale mogę użyć i zobaczyć, czy coś odczytam :wink:


(p.spaczek) #4

Ja dobrze widzę iterujesz po tekście. text[i] to jeden znak czy więcej?


(hindus) #5

Jak zaczniesz to będziesz się zastanawiać jak mogłeś bez tego w ogóle próbować cokolwiek robić.
Jakiego IDE używasz?


(DarthVader3105) #6

Code::Blocks


(DarthVader3105) #7

text[i] to się odnosi do jednego znaku/bajta :wink:


(hindus) #8

Zobacz https://www.youtube.com/watch?v=fzI_qOabTLs
I podejrzyj sobie na każdym kroku wykonania kodu co siedzi w danej zmiennej, a czego oczekiwałeś.


(DarthVader3105) #9

Z projektu zawsze wywalałem target Debug i mam tylko Release… i to chyba nie działa :slight_smile: