cos2000v2/lib/string.c

79 lines
1.6 KiB
C
Raw Normal View History

#include <string.h>
/******************************************************************************/
/* Compare 2 chaines de caract<63>re et renvoie la premiere distance (diff) */
s8 strcmp(const u8 * src, const u8 * des)
{
register s8 result;
do {
if ((result = *src - *des++) != 0)
break;
}
while (*src++ != 0);
return result;
}
/******************************************************************************/
/* Trouve la premiere occurence d'un caract<63>re dans une chaine */
u8 *strchr(const u8 * src, u8 achar)
{
for (; *src != achar; ++src)
if (*src == 0)
return 0;
return (u8 *) src;
}
/******************************************************************************/
/* Renvoie la taille de la chaine */
u32 strlen(const u8 * src)
{
u32 size;
for (size = 0; *(src + size) != 0; size++) ;
return size;
}
/******************************************************************************/
/* copie une chaine dans une autre */
u8 *strcpy(const u8 * src, u8 * des)
{
u8 *temp = des;
while ((*des++ = *src++) != 0) ;
return temp;
}
/******************************************************************************/
/* copie une portion limit<69> d'une chaine asciiZ*/
u8 *strncpy(const u8 * src, u8 * des, u32 count)
{
u8 *temp = des;
while (count) {
if ((*temp = *src) != 0)
src++;
temp++;
count--;
}
return des;
}
/******************************************************************************/
/* concatene 2 chaines de caract<63>re */
u8 *strcat(const u8 * src, u8 * des)
{
u8 *temp = des;
while (*des != 0)
des++;
while ((*des++ = *src++) != 0) ;
return temp;
}