Listing 1 STR_NGET.C - functions for extracting or finding a substring

/*****************************************************
         File Name: STR_NGET.C
       Description: Library of functions for geting
                  substrings in a string
Global Function List: str_nleft
                  str_nmid
                  str_nright
                  str_rstr
        Portability: Standard C
*****************************************************/

#include <stdlib.h>
#include <string.h>
#include <str_nget.h>

/*****************************************************
       Name: str_nleft
Expanded Name: Get Left N Characters
  Parameters: Str - string to get left characters
            Num - number of characters to get
     Return: Str
 Description: Get Num leftmost charcters in Str.
            Modifies Str.
*****************************************************/
char *str_nleft( char *Str, size_t Num )
   {

   if ( Num < strlen( Str ))
      {
      Str[Num] = '\0';
      }

   return ( Str );

   }  /* function str_nleft */

/*****************************************************
       Name: str_nmid
Expanded Name: Get Middle N Characters
  Parameters: Str - string to get substring in
            Pos - index into Str of start of midstr
            Num - count of charcters to get
     Return: Str
 Description: Get Num chars from middle of string.
*****************************************************/
char *str_nmid( char *Str, size_t Pos, size_t Num )
   {

   char *Mid;
   size_t Len = strlen( Str );

   if ( Pos >= Len )
      {
      /* Outside of string */
      *Str = '\0';
      return ( Str );
      }

   /* Adjust count if it extends outside of string */
   if ( Pos + Num > Len )
      {
      Num = Len - Pos;
      }

   Mid = &Str[Pos];
   memmove( (void *)Str, (void *)Mid, Num );
   Str[Num] = '\0';

   return ( Str );

   }  /* function str_nmid */

/*****************************************************
       Name: str_nright
Expanded Name: Get Right N Characters
  Parameters: Str - string to get right characters
            Num - number of characters to get
     Return: Str
 Description: Get Num righmost characters in Str.
            Modifies Str.
*****************************************************/
char *str_nright( char *Str, size_t Num )
   {

   size_t Len = strlen( Str );

   return ( str_nmid( Str,
        ( Num > Len ? 0 : Len - Num ),
        min( Num, Len ) ) );

   }  /* function str_nright */

/*****************************************************
       Name: str_rstr
Expanded Name: String Right (Reverse) Search
  Parameters: Str - string to search
            Find - string to search for
     Return: Pointer to last occurrence of substring
            Find in Str or NULL if not found
 Description: Searches for last occurrence of sub
            string Find within Str.
*****************************************************/
char *str_rstr( char *Str, char *Find )
   {

   char *StrResult = NULL, *StrWork = Str;

   while ( ( StrWork =
        strstr( StrWork, Find ) ) != NULL )
     {
     StrResult = StrWork;
     StrWork++;
     }

   return ( StrResult );

   }  /* function str_rstr */

/* End of File */