Title:String Library (Data Structures)

/*
    FILE : STRING.H
    File contains declaration and definition of functions
        handling string manipulation
    Tools Used :
        Compiler - TCC.EXE ( Turbo )
    Compatibility:
        Compatible to all ANSI standard C++ compiler
    Programmed by : Prince M. Premnath
    Mail : princeatapi@yahoo.co.in
    Date : 12/06/2007
*/


#ifndef _STRING_H
#define _STRING_H


#ifndef _SIZE_T
#define _SIZE_T
    typedef unsigned size_t;
#endif

#ifndef NULL
#define NULL    0
#endif


int     strlen    ( const char * __str );
char*     strcpy    ( char* __dest , const char* __src );
int     strcmp    ( const char* __str1 , const char* __str2 );
char*     strupr    ( char* __str );
char*     strlwr    ( char* __str );
char*     strset    ( char* __str , int ch );
char*     strcat    ( char* __dest , const char* __src );
char*     strchr    ( const char* __str , int __ch );
char*     strdup    ( const char* __str);
char*     strrev    ( char* __str);
int     strncmp    ( const char* __str1 , const char* __str2 , int maxlen);
int     stricmp    ( char* __str1 , char* __str2);
int     indexof ( const char* __str, char __ch);
char*     replace ( char* __str , char __ch1 , char __toch2);
int     whereAt ( char* __str , char __ch);
char    charAt  ( char* __str , int __where);
void    setCharAt( char* __str, int __where , char __ch);


void setCharAt( char* str , int where , char ch)
{
    int i = 0 , l = 0;

    while(*(str + i)){ l++;i++;}
    if( where < l )
        *(str + where ) = ch;
    return -1;
}


int whereAt( char* str , char ch)
{
    int i = 0;
    while( *( str + i++ ) )
    {
        if( *(str + i ) == ch )
            return i;
    }
    return -1;
}

char charAt( char* str , int where)
{
    int i = 0 , l = 0;

    while(*(str + i)){ l++;i++;}
    if( where < l )
        return *(str + where);
    return NULL;
}


char* replace( char* str , char ch1 , char toch2)
{
    char* ptr = str;
    int i = 0;

    while( *(str + i ) )
    {
       if( *( str + i ) == ch1 )
        *( str + i ) = toch2;
       i++;
    }
    return ptr;
}

int indexof( const char* str , char ch)
{
    int i = 0 , index = 0;
    while( *( str + i ) )
    {
        if(*( str + i) == ch)
            return index;
        index++ ; i++;
    }
}

int stricmp( char* str1 ,  char* str2)
{
    return strcmp( strlwr(str1) , strlwr(str2) );
}

int strncmp( const char* str1 , const char* str2 , int maxlen)
{
    int i = 0;
    maxlen += 1;
    while( *( str1 + i ) && --maxlen )
    {
        if( *( str1 + i ) != *( str2 + i ) )
            return *( str1 + i ) - *( str2 + i);
        ++i;
    }
    if( *( str2 + i ) && maxlen )

        return 0 - *( str2 + i );
    else
        return 0;

}

char* strrev( char* str )
{
    char* temp;
    int len = 0 , i = 0;

    while( *( str + i++ ) ) len++;
    i = 0;
    while( *( temp + i++) = *( str + --len) );
    return temp;
}

char* strdup( const char* str)
{
    int len = 0 , i = 0;
    char* buffer;

    while( *( str + i++ ) ) len++;
    buffer = new char[len];

    if(!buffer )
        return NULL;
    i = 0;
    while( *( buffer + i ) = *( str + i ) ) ++i;
    return buffer;
}



char* strchr( const char* str , int ch)
{
    int i = 0;

    while( *(str + i++ ) )
    {
        if( *( str + i ) == ch )
            return (char*) ( str + i );
    }
    return NULL;
}

char* strcat( char* dest , const char* src)
{
    int i = 0 , j = 0;

    while( *(dest + ++i) );
    while( *(dest + i++ ) = *(src + j++) );
    return dest;
}


char* strset( char* str , int ch)
{
    int i = 0;

    while( *(str + i) )
    {
        *(str + i ) = ch;
        ++i;
    }
    return str;
}

char* strupr( char* str )
{
    int i = 0;

    while( *(str + i) )
    {
        if( *(str + i ) >= 97 && *( str + i ) <= 122)
            *(str + i ) = *(str + i ) - 32;
        ++i;

    }
    return str;
}


char* strlwr( char* str)
{
    int i = 0;

    while( *(str + i) )
    {
        if( *(str + i ) >= 65 && *( str + i ) <= 90)
            *(str + i ) = *(str + i ) + 32;
        ++i;
    }
    return str;
}


char* strcpy( char* dest , const char* source )
{
    while(*dest++ = *source++);
    return dest;
}

int strlen( const char* str)
{
    int len = 0;
    while(*str++)
        len++;
    return len;
}


int strcmp( const char* str1 , const char* str2)
{

    int i = 0;

    while( *(str1 + i ) )
    {
        if( *( str1 + i ) != *( str2 + i ))
            return *(str1 + i ) - *( str2 + i);
        ++i;
    }
    if( *(str2 + i ) )

        return 0 - *(str2 + i);
    else
        return 0;

}

#endif


0 comments:

Post a Comment