www.keything.net

全面迁移新的blog地址 www.keything.net

关于字符串函数的实现

在很多面试及笔试中,都会有字符串的操作,有的甚至不允许使用C函数库中的函数,所使用函数都需要自己编写。那么就有必要针对字符串函数的实现,进行一个讲解。

首先:

将详细讲解在字符串函数实现中常用的语句

*str++


实际上是先使用*str,再str = str+1;这句话经常出现。比如计算字符串长度

int StrLen(char *str)
{
	if (NULL == str)
		exit(0);
	int length = 0;
	while(*str++)
	{
		length++;
	}
	return length;
}

假如我们不使用*str++这个语句,那么必然要引入i,

int StrLen(char *str)
{
	int length = 0,i;
	for (i = 0; *(str + i) != '\0'; i++)
	{
		length++;	;
	}
	return length;
}


 

这样就造成了语句的冗余,尤其在后面的字符串比较及其他更复杂操作,*str++的方便性更能体现。

其次:

1.字符串长度函数

如上已经给出

2.字符串比较函数

3.字符串复制函数

4.字符串连接函数

对于这些函数我将会在稍后将完整程序列出。

头文件 StrSelf.h

#ifndef _STR_SELF_
#define _STR_SELF_
#include <stdlib.h>
#include<stdio.h>
int StrLen(char *str);

int StrCmp(char *str1, char *str2);

char* StrCpy(char *StrDst, char *StrSrc);

char * StrCat(char *StrDst,char *StrSrc);
#endif


函数实现文件StrSelf.cpp

#include "StrSelf.h"

int StrLen(char *str)
{
	if (NULL == str)
		exit(0);
	int length = 0;
	while(*str++)
	{
		length++;
	}
	return length;
}


// 0 equal ,< 0 less,>0 larger 
int StrCmp(char *str1, char *str2)
{
	if (NULL == str1 || NULL == str2)
		exit(0);
	while(*str1 && *str2 &&(*str1 == *str2))
	{
		str1++;
		str2++;
	}
	return *str1 - *str2;

}
char* StrCpy(char *StrDst, char *StrSrc)
{
	if (NULL == StrDst || NULL == StrSrc)
		exit(0);
	char *address = StrDst;
	while(*StrSrc)
	{
		*StrDst++ = *StrSrc++;
	}
	*StrDst = '\0';
	return address;
}


char * StrCat(char *StrDst,char *StrSrc)
{
	char * address = StrDst;
	while(*StrDst)
		StrDst++;
	while(*StrSrc)
	{
		*StrDst++ = *StrSrc++;
	}
	*StrDst = '\0';
	return address;
}


部分测试文件

#include<stdio.h>
#include "StrSelf.h"
#define  MaxNumDstStr 20



int main(void)
{
	
	char StrDst[100] = "i love";
	
	

	char *StrSrc = "qin";
	printf("strsrc is %s\n",StrSrc);
	printf("strdst is %s\n",StrDst);

	
	printf("strdst is %s\n",StrCat(StrDst, StrSrc));

	return 0;

	
}


 

阅读更多
想对作者说点什么? 我来说一句

sql_logLearn

2010年09月19日 1KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭