RE: Mikro C PIC - string - problém
Radek Benedikt
benedikt na lphard.cz
Úterý Leden 14 11:40:36 CET 2014
Ale ne , stačí se na to podívat z druhého konce. Tady je řečeno že string
bude 16 znaků + 1 null. A aby se do toho nenakopírovali víc, než to snese,
tak na to jsou knihovní funkce.
char *strcpy( char *dest, const char *src);
Zkopíruje řetězec src do řetězce dest. Vrací ukazatel na dest.
char *strncpy( char *dest, const char *src, size_t n);
Jako strcpy(), ale zkopíruje maximálně n znaků. (Je-li jich právně n,
nepřidá zarážku).
V tomto případě strncpy. Je v tom ale jeden drobný zakopaný pes. Nesmí se
přepsat ta zarážka, tj. n = 16 a ta proměnná musí být na počátku korektně
inicializovaná na 16 znaků + zarážka, nebo inicializovat alespoň tu zarážku.
Psát vlastní funkce v tomto případě není nutno.
Radek (benedikt2hw.cz)
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Martin
Persich
Sent: Tuesday, January 14, 2014 10:35 AM
To: HW-news
Subject: Re: Mikro C PIC - string - problém
Pokud používáte standardní funkce "str...()", tak si bohužel délku bufferů
musíte v programu hlídat sám. A hodně důsledně! Stačí chvilka nepozornosti a
i po několika letech se objevují v programu chyby... To je bohužel jeden z
velkých nedostatků (a zárověň výhod .-) ) jazykä "C".
Martin
Další informace o konferenci Hw-list