#include <string.h>
/* strcpy function */
char *(strcpy)(char *_Restrict s1, const char *_Restrict s2)
{ /* copy char s2[] to s1[] */
char *s;
for (s = s1; (*s++ = *s2++) != '\0'; )
;
return (s1);
}
char *(strncpy)(char *_Restrict s1, const char *_Restrict s2,
size_t n)
{ /* copy char s2[max n] to s1[n] */
char *s;
for (s = s1; 0 < n && *s2 != '\0'; --n)
*s++ = *s2++; /* copy at most n chars from s2[] */
for (; 0 < n; --n)
*s++ = '\0';
return (s1);
}
/* strcat function */
char *(strcat)(char *_Restrict s1, const char *_Restrict s2)
{ /* copy char s2[] to end of s1[] */
char *s;
for (s = s1; *s != '\0'; ++s)
; /* find end of s1[] */
for (; (*s = *s2) != '\0'; ++s, ++s2)
; /* copy s2[] to end */
return (s1);
}
/* strncat function */
char *(strncat)(char *_Restrict s1, const char *_Restrict s2, size_t n)
{ /* copy char s2[max n] to end of s1[] */
char *s;
for (s = s1; *s != '\0'; ++s)
; /* find end of s1[] */
for (; 0 < n && *s2 != '\0'; --n)
*s++ = *s2++; /* copy at most n chars from s2[] */
*s = '\0';
return (s1);
}
/* strchr function */
_Const_return char *(strchr)(const char *s, int c)
{ /* find first occurrence of c in char s[] */
const char ch = (char)c;
for (; *s != ch; ++s)
if (*s == '\0')
return (0);
return ((char *)s);
}
/* strcmp function */
int (strcmp)(const char *s1, const char *s2)
{ /* compare unsigned char s1[], s2[] */
for (; *s1 == *s2; ++s1, ++s2)
if (*s1 == '\0')
return (0);
return (*(unsigned char *)s1 < *(unsigned char *)s2
? -1 : +1);
}
/* strncmp function */
int (strncmp)(const char *s1, const char *s2, size_t n)
{ /* compare unsigned char s1[max n], s2[max n] */
for (; 0 < n; ++s1, ++s2, --n)
if (*s1 != *s2)
return (*(unsigned char *)s1
< *(unsigned char *)s2 ? -1 : +1);
else if (*s1 == '\0')
return (0);
return (0);
}
/* strlen function */
size_t (strlen)(const char *s)
{ /* find length of s[] */
const char *sc;
for (sc = s; *sc != '\0'; ++sc)
;
return (sc - s);
}
/*strlwr function */
char *strlwr( char *str )
{
char *p = str;
char c;
for( ;; ) {
c = *p;
if( c == '\0' ) break;
if( c >= 'A' && c <= 'Z' ) {
*p = c + ('a' - 'A');
}
++p;
}
return( str );
}
/* strupr function */
char *strupr( char *str )
{
char *p = str;
char c;
for( ;; ) {
c = *p;
if( c == '\0' ) break;
if( c >= 'a' && c <= 'z' ) {
*p = c + ('A' - 'a');
}
++p;
}
return( str );
}
/* strstr function */
_Const_return char *(strstr)(const char *s1, const char *s2)
{ /* find first occurrence of s2[] in s1[] */
if (*s2 == '\0')
return ((char *)s1);
for (; (s1 = strchr(s1, *s2)) != 0; ++s1)
{ /* match rest of prefix */
const char *sc1, *sc2;
for (sc1 = s1, sc2 = s2; ; )
if (*++sc2 == '\0')
return ((char *)s1);
else if (*++sc1 != *sc2)
break;
}
return (0);
}
/*strrev function */
char *strrev( char *s )
{
size_t lo;
size_t hi;
char c;
lo = 0;
hi = strlen( s );
if( hi != 0 ) {
for( ;; ) {
--hi;
if( lo >= hi ) break;
c = s[lo];
s[lo] = s[hi];
s[hi] = c;
++lo;
}
}
return( s );
}
字符串处理函数的实现
最新推荐文章于 2021-12-26 12:45:26 发布