X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstring%2Fstrncpy.c;fp=functions%2Fstring%2Fstrncpy.c;h=614ca13e097384fbf1d4e8bf52bc2d3874ad8e20;hb=c2f1367984ba4153d892062759c3813020b65a9a;hp=0000000000000000000000000000000000000000;hpb=3220f577b186e04180acd7554a785c60dfb7ebb2;p=pdclib diff --git a/functions/string/strncpy.c b/functions/string/strncpy.c new file mode 100644 index 0000000..614ca13 --- /dev/null +++ b/functions/string/strncpy.c @@ -0,0 +1,28 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* strncpy( char *, const char *, size_t ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#include + +char * strncpy( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ) +{ + char * rc = s1; + while ( ( n > 0 ) && ( *s1++ = *s2++ ) ) + { + /* Cannot do "n--" in the conditional as size_t is unsigned and we have + to check it again for >0 in the next loop. + */ + --n; + } + while ( n-- ) + { + *s1++ = '\0'; + } + return rc; +}