自己写几个字符串函数

发布时间:2024年01月10日

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

strlen函数

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

#include<stdio.h>
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<stdio.h>
//strcpy函数
int main()
{
	char a[20] = {0};
	strcpy(a, "abcdefg");
	printf("%s", a);
}

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

自己写一个strcpy

????????

#include<stdio.h>
//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的地址)。

?

文章来源:https://blog.csdn.net/Aishangyuwen/article/details/135490430
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。