一些字符串函数的实现——C语言版本


//strfun.h


#ifndef _STRFUN_H_
#define _STRFUN_H_
/* 定义NULL指针 */


/* 包含_ASSERT宏定义 */
#include <crtdbg.h>


#ifndef NULL
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif


#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#define _SIZE_T_DEFINED
#endif


/* 得到字符串长度函数 */
size_t strlen( const char *str );
/* 连接字符串函数 */
char *strcat( char *strDest, const char *strSrc );
/* 复制字符串函数 */
char *strcpy( char *strDest, const char *strSrc );
#endif


//strfun.cpp


#include “strfun.h”


size_t strlen( const char * str )
{
 _ASSERT( str != NULL );


 size_t len = 0;


 while( *str ) {
  len++;
  str++;
 }


 return len;
}


char *strcat(char *strDest, const char *strSrc)
{
 _ASSERT( (strDest != NULL) && (strSrc != NULL) );


 char *strTmp = strDest;


 while( *strTmp ) {
  strTmp++;
 }


 do {
  *strTmp++ = *strSrc;
 } while ( *strSrc++ );


 return strDest;
}


char *strcpy( char *strDest, const char *strSrc )
{
 _ASSERT( (strDest != NULL) && (strSrc != NULL) );


 char *strTmp = strDest;


 while ( (*strTmp++ = *strSrc++) != ‘\0′ ) {
  NULL;
 }


 return strDest;
}