size_t类型

  typedef unsigned int size_t;

<h3 id="1">1、strchr</h3>

    /***
    *char *strchr(string, c) - search a string for a character
    *
    *Purpose:
    *       Searches a string for a given character, which may be the
    *       null character '\0'.
    *
    *Entry:
    *       char *string - string to search in
    *       char c - character to search for
    *
    *Exit:
    *       returns pointer to the first occurence of c in string
    *       returns NULL if c does not occur in string
    *
    *Exceptions:
    *
    *******************************************************************************/

    char *  strchr (const char * string,int ch)
    {
        while (*string && *string != (char)ch)
                string++;

        if (*string == (char)ch)
                return((char *)string);
        return(NULL);
    }

<h3 id="2">2、strstr</h3>

    /***
    *char *strstr(string1, string2) - search for string2 in string1
    *
    *Purpose:
    *       finds the first occurrence of string2 in string1
    *
    *Entry:
    *       char *string1 - string to search in
    *       char *string2 - string to search for
    *
    *Exit:
    *       returns a pointer to the first occurrence of string2 in
    *       string1, or NULL if string2 does not occur in string1
    *
    *Uses:
    *
    *Exceptions:
    *
    *******************************************************************************/

    char *  strstr (const char * str1,const char * str2)
    {
        char *cp = (char *) str1;
        char *s1, *s2;

        if ( !*str2 )
            return((char *)str1);

        while (*cp)
        {
                s1 = cp;
                s2 = (char *) str2;

                while ( *s1 && *s2 && !(*s1-*s2) )
                        s1++, s2++;

                if (!*s2)
                        return(cp);

                cp++;
        }

        return(NULL);

    }

<h3 id="3">3、strcat</h3>

    /***
    *char *strcat(dst, src) - concatenate (append) one string to another
    *
    *Purpose:
    *       Concatenates src onto the end of dest.  Assumes enough
    *       space in dest.
    *
    *Entry:
    *       char *dst - string to which "src" is to be appended
    *       const char *src - string to be appended to the end of "dst"
    *
    *Exit:
    *       The address of "dst"
    *
    *Exceptions:
    *
    *******************************************************************************/

    char *  strcat (char * dst,const char * src)
    {
        char * cp = dst;

        while( *cp )
            cp++;                   /* find end of dst */

        while( *cp++ = *src++ ) ;       /* Copy src to end of dst */

        return( dst );                  /* return dst */

    }

<h3 id="4">4、strcpy</h3>

    /***
    *char *strcpy(dst, src) - copy one string over another
    *
    *Purpose:
    *       Copies the string src into the spot specified by
    *       dest; assumes enough room.
    *
    *Entry:
    *       char * dst - string over which "src" is to be copied
    *       const char * src - string to be copied over "dst"
    *
    *Exit:
    *       The address of "dst"
    *
    *Exceptions:
    *******************************************************************************/

    char *  strcpy(char * dst, const char * src)
    {
        char * cp = dst;

        while( *cp++ = *src++ )
                ;               /* Copy src over dst */
        return( dst );
    }

<h3 id="5">5、strncpy</h3>


    /***
    *char *strncpy(dest, source, count) - copy at most n characters
    *
    *Purpose:
    *       Copies count characters from the source string to the
    *       destination.  If count is less than the length of source,
    *       NO NULL CHARACTER is put onto the end of the copied string.
    *       If count is greater than the length of sources, dest is padded
    *       with null characters to length count.
    *
    *
    *Entry:
    *       char *dest - pointer to destination
    *       char *source - source string for copy
    *       unsigned count - max number of characters to copy
    *
    *Exit:
    *       returns dest
    *
    *Exceptions:
    *
    *******************************************************************************/

    char *  strncpy (char * dest,const char * source,size_t count)
    {
        char *start = dest;

        while (count && (*dest++ = *source++))    /* copy string */
                count--;

        if (count)                              /* pad out with zeroes */
                while (--count)
                        *dest++ = '\0';

        return(start);
    }

<h3 id="6">6、strcmp</h3>

    /***
    *strcmp - compare two strings, returning less than, equal to, or greater than
    *
    *Purpose:
    *       STRCMP compares two strings and returns an integer
    *       to indicate whether the first is less than the second, the two are
    *       equal, or whether the first is greater than the second.
    *
    *       Comparison is done byte by byte on an UNSIGNED basis, which is to
    *       say that Null (0) is less than any other character (1-255).
    *
    *Entry:
    *       const char * src - string for left-hand side of comparison
    *       const char * dst - string for right-hand side of comparison
    *
    *Exit:
    *       returns -1 if src <  dst
    *       returns  0 if src == dst
    *       returns +1 if src >  dst
    *
    *Exceptions:
    *
    *******************************************************************************/

    int  strcmp (const char * src,const char * dst)
    {
        int ret = 0 ;

        while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
            ++src, ++dst;

        if ( ret < 0 )
            ret = -1 ;
        else if ( ret > 0 )
            ret = 1 ;

        return( ret );
    }

<h3 id="7">7、strncmp</h3>

    /***
    *int strncmp(first, last, count) - compare first count chars of strings
    *
    *Purpose:
    *       Compares two strings for lexical order.  The comparison stops
    *       after: (1) a difference between the strings is found, (2) the end
    *       of the strings is reached, or (3) count characters have been
    *       compared.
    *
    *Entry:
    *       char *first, *last - strings to compare
    *       unsigned count - maximum number of characters to compare
    *
    *Exit:
    *       returns <0 if first < last
    *       returns  0 if first == last
    *       returns >0 if first > last
    *
    *Exceptions:
    *
    *******************************************************************************/

    int  strncmp (const char * first,const char * last,size_t count)
    {
        if (!count)
                return(0);

        while (--count && *first && *first == *last)
        {
                first++;
                last++;
        }

        return( *(unsigned char *)first - *(unsigned char *)last );
    }

<h3 id="8">8、atol</h3>

    /***
    *long atol(char *nptr) - Convert string to long
    *
    *Purpose:
    *       Converts ASCII string pointed to by nptr to binary.
    *       Overflow is not detected.
    *
    *Entry:
    *       nptr = ptr to string to convert
    *
    *Exit:
    *       return long int value of the string
    *
    *Exceptions:
    *       None - overflow is not detected.
    *
    *******************************************************************************/

    long  atol(const char *nptr)
    {
        int c;              /* current char */
        long total;         /* current total */
        int sign;           /* if '-', then negative, otherwise positive */

        /* skip whitespace */
        while ( isspace((int)(unsigned char)*nptr) )
            ++nptr;

        c = (int)(unsigned char)*nptr++;
        sign = c;           /* save sign indication */
        if (c == '-' || c == '+')
            c = (int)(unsigned char)*nptr++;    /* skip sign */

        total = 0;

        while (isdigit(c)) {
            total = 10 * total + (c - '0');     /* accumulate digit */
            c = (int)(unsigned char)*nptr++;    /* get next char */
        }

        if (sign == '-')
            return -total;
        else
            return total;   /* return result, negated if necessary */
    }

<h3 id="9">9、atoi</h3>

    /***
    *int atoi(char *nptr) - Convert string to long
    *
    *Purpose:
    *       Converts ASCII string pointed to by nptr to binary.
    *       Overflow is not detected.  Because of this, we can just use
    *       atol().
    *
    *Entry:
    *       nptr = ptr to string to convert
    *
    *Exit:
    *       return int value of the string
    *
    *Exceptions:
    *       None - overflow is not detected.
    *
    *******************************************************************************/

    int  atoi(const char *nptr)
    {
        return (int)atol(nptr);
    }