关于字符串函数的实现

在很多面试及笔试中,都会有字符串的操作,有的甚至不允许使用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;

	
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值