ΠΡΠ½ΠΈΠ΅Π» CΡΠ΅Π½Π±Π΅ΡΠ³ (Daniel Stenberg), Π°Π²ΡΠΎΡ ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ curl, ΠΎΠ±ΡΡΠ²ΠΈΠ» ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ strcpy() Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΎΡΠΊΠ°Π·Π° ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ strncpy(), ΠΊΠΎΠΏΠΈΡΡΡΡΠ΅ΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ ΠΈΠ· Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ strncpy() ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ·-Π·Π° ΠΏΡΠΎΠΏΡΡΠΊΠ° Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΎΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½ΡΠ»ΡΠΌΠΈ.
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ strncpy() Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ strcpy(), ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ c ΡΡΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°. ΠΠ°ΠΌΠ΅Π½Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΡ strlcpy() Π½Π΅ Π±ΡΠ»Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ strcpy() Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ curlx_strcopy(dest, dsize, src, slen). Π€ΡΠ½ΠΊΡΠΈΡ curlx_strcopy() ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Ρ ΡΠ°ΡΡΡΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π»Ρ Π²ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² ΠΊΠΎΠ½Π΅Ρ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ° ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ, Π½ΠΎ Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π² Π½Π°ΡΠ°Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ. void curlx_strcopy(char *dest, size_t dsize, const char *src, size_t slen) { DEBUGASSERT(slen < dsize); if(slen < dsize) { memcpy(dest, src, slen); dest[slen] = 0; } else if(dsize) dest[0] = 0; }
ΠΠ°ΠΌΠ΅Π½Π° strcpy() Π½Π° curlx_strcopy() ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ/Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ strcpy(), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Π΄ΡΠΌΠ°Π½Π½ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ Π»ΠΈΡΡ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ strcpy(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ strcpy ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° Π»ΠΎΠΆΠ½ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ
ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ
ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΉ AI-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΈΡΠ°ΡΡΠΈΡ
Π½Π°Π»ΠΈΡΠΈΠ΅ strcpy() ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ Π±Π΅Π· ΡΡΡΡΠ° ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
