Předávání dat do funkce v C a jiná velikost

Jardaa

Re:Předávání dat do funkce v C a jiná velikost
« Odpověď #15 kdy: 27. 11. 2012, 16:47:37 »
    end = str + ptrSize;
    while ((end > str && isspace(*end)) || (end > str && isprint(*end) == 0)) end--;

Tohle ti už od pohledu bude číst char mimo pMsgDesc->PutDate, kterýžto má mít 48 byte takže můžeš přistupovat jenom k bytům od 0 do 47 a né 48.

Děkuji za upozornění, kontroloval jsem to a řetězec je zde celý (příklad 123456789012345678901234567890123456789012345678 = 48 znaků).

pMsgDesc->PutDate a ostatní řetězce, které zpracovávám přes ptr nejsou v pravém slova smyslu řetězce - chybý jim na konci znak '\0', který zpracovávám v str a v něm je zaručeno, že poslední znak bude vždy '\0' (pokud ptr neobsahuje prázdné znaky zprava v tom případě bude znak '\0' umístěn na jiný index.

Pokud existuje nějaký příklad, ve kterém toto selže byl bych rád, abych o tom věděl.

Příklad vstupních dat (záměrně neuvádím na konci dat '\0', protože 100% tam není).

't' + 'e' + 's' + 't' mi vrátí do str 't' + 'e' + 's' + 't' + '\0'

't' 'e' 's' 't' '\20' '\20' '\20' mi vrátí do str 't' + 'e' + 's' + 't' + '\0'