自己写几个字符串函数

        字符串一直是一个很神奇的东西,顾名思义,字符串是由字符所构成的串,而一串字符也就构成了字符串;而我们又知道,字符在内存中是以ASCII码的形式进行存储的,所以说将一切联系起来,我们就可以来研究一下字符串了。这篇文章主要研究几个字符串中简单的函数,并且用自己的方式,模仿一下这几个函数的实现。

strlen函数

        最经典的strlen函数,可以计算字符串的长度,用法如下:

#include
int main()
{
	char* a = "abcdef";
	printf("%d", (int)strlen(a));
}

        最简单的用法,就可以算出a这个字符串的长度为6,注意,strlen的返回值是(size_t),所以说我们将其强制类型转化一下成int。

自己写一个strlen 

        让我们自己来写一个strlen函数:

size_t my_strlen(char* a)
{
	int count = 0;
	while (*a != '\0')
	{
		count++;
		a++;
	}
	return count;
}
int main()
{
	char *a = "abcdefg";
	//printf("%d", (int)strlen(a));
	printf("%d", (int)my_strlen(a));
	return 0;
}

        这就是我们模仿的strlen函数写的mystrlen函数,定义一个变量为count,只要a不是\0,count就++,然后返回count,这就是模拟的strlen实现。

strcpy函数

        strcpy函数,顾名思义,就是字符串的拷贝(copy),怎么使用呢?

#include
//strcpy函数
int main()
{
	char a[20] = {0};
	strcpy(a, "abcdefg");
	printf("%s", a);
}

        我们就用strcpy函数来将abcdefg拷贝到了a里面去,然后打印出来,a就是abcdefg了。让我们来模拟实现一下:

自己写一个strcpy

        

#include
//my_strcpy
char* my_strcpy(char* a, char* b)
{
	char* ret = a;
	while (*a++ = *b++)
		;
	return ret;
}
int main()
{
	char a[20];
	char* b = "abcdefg";
	my_strcpy(a, b);
	printf("%s", a);
	return 0;
}

        这个函数是如何实现的呢 ,其实很简单,创建一个指针来存放a的地址,当b不等于\0的时候,就将*a的值赋成*b的值,然后分别++,这样当b为\0的时候,就退出循环,然后返回temp的地址(也就是原来a的地址)。

 

你可能感兴趣的:(c语言)