strlcpy och strlcat är icke-standardiserade funktioner skapade som en ersättning för de ofta missbrukade motsvarigheterna till C - programspråkets standardbibliotek för att kopiera innehållet i en nollterminerad sträng till en buffert av begränsad storlek med buffertspillskydd .
strlcpy och strlcatär en säker och effektiv ersättning för standardfunktionerna strncpyrespektive strncat.
strlcpyoch strlcatdök upp och underhålls i OpenBSD . Senare började de användas i några andra operativsystem. På system som inte stöder strlcpy/ strlcat, är det möjligt att implementera dem på ett hantverksmässigt sätt, till exempel från källkod distribuerad under BSD-licensen .
Prototyper som beskrivs i rubrikfilen string.h:
size_t strlcpy (char *dst, const char *src, size_t size); size_t strlcat (char *dst, const char *src, size_t size);Funktionen strlcpykopierar inte mer än tecken från strängen srctill bufferten och kommer garanterat att sätta nolltecknet till slutet av strängen. gör detsamma, men kopieringen utförs inte i början utan på ett sådant sätt att den linje som pekas på fortsätter . I fallet när det pekar på nolltecknet är funktionernas beteende likvärdigt. dstsize - 1strlcatdstdstdst
strlcpyreturnerar storleken på strängen vid src. strlcatreturnerar den totala längden på strängar vid adresser srcoch dst. Returvärdet beror inte på om hela strängen lyckades kopieras eller inte; detta gör det enkelt att avgöra om destinationsbufferten är för liten för strängen som kopieras.
Slutsats:
string: "strängmönster" buffert före kopia: "" sträng trunkering upptäckt från 14 till 9 tecken! buffert efter kopia: "prov med"(strängen trunkerades till buffertens storlek under kopiering - 9 tecken + noll)
OpenBSD | |
---|---|
Operativ system |
|
gafflar |
|
Relaterade Projekt | |
människor |
|
Organisationer och andra resurser |
|