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