EXPORT char *strncpy(char *dst, const char *src, size_t num)
{
char *to = dst;
- while(*src && num--) *to++ = *src++;
- *to = '\0';
+ while(num --)
+ {
+ if(*src)
+ *to++ = *src++;
+ else
+ *to++ = '\0';
+ }
return dst;
}
*/
EXPORT size_t strlen(const char *str)
{
- size_t retval;
- for(retval = 0; *str != '\0'; str++, retval++);
- return retval;
+ size_t len = 0;
+ while(str[len] != '\0')
+ len ++;
+ return len;
}
/**
*/
EXPORT size_t strnlen(const char *str, size_t maxlen)
{
- size_t len;
- for( len = 0; maxlen -- && *str; str ++, len ++ )
- ;
+ size_t len = 0;
+ while( len < maxlen && str[len] != '\0' )
+ len ++;
return len;
}
/**
* \fn EXPORT char *strchr(char *str, int character)
* \brief Locate a character in a string
+ * \note The terminating NUL is part of the string
*/
EXPORT char *strchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
- for(;*str;str++)
+ do
{
if( *str == character )
return (char*)str;
- }
+ } while( *str++ );
return NULL;
}
EXPORT char *strrchr(const char *_str, int character)
{
const unsigned char* str = (const unsigned char*)_str;
- for( int i = strlen(_str); i--; )
+ size_t i = strlen(_str);
+ do
{
if(str[i] == character)
return (void*)&str[i];
- }
+ } while( i -- );
return NULL;
}