常用字符串函数介绍(1)

本文介绍了C语言中几个常用的字符串处理函数,包括strlen用于计算字符串长度,strcpy用于复制字符串,strcat用于字符串拼接,strcmp用于字符串比较,以及strstr用于查找子字符串。每个函数都提供了使用示例和简单的模拟实现。
摘要由CSDN通过智能技术生成

在C语言库函数中有些许多好用的字符串函数,下面我们一起来熟悉一下他们吧。(在使用时要包string.h头文件)

一、strlen函数

 

strlen函数的参数是一个字符指针,返回值是一个无符号整数。用法是把字符串的首元素的地址传进去,就会返回这个字符串的长度。

函数作用:求一个字符串的长度

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char str[] = "abcd";
	printf("%d\n", strlen(str));
	return 0;
}

 运行结果:

自己模拟实现:

int my_strlen(char* s)
{
	int count = 0;
	while (*s)
	{
		count++;
		++s;
	}
	return count;
}

二、strcpy函数 

 strcpy函数的作用是拷贝字符串,它会把source中的字符串拷贝到destination中,并返回destination的首元素地址(要确保destination的空间够大)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char dst[] = "abcd";
	char src[] = "efgh";
	strcpy(dst, src);
	printf("%s\n", dst);
	return 0;
}

运行结果 :

dst字符串变成了"efgh" 

 自己模拟实现:

char* my_strcpy(char* dst, const char* src)
{
	char* ret = dst;
	while (*dst++ = *src++)
	{
		;
	}
	return dst;
}

三、strcat函数

 

strcat函数的作用是在destination字符串后面追加source字符串,并返回destination字符串首元素的地址。(要确保destination字符串的空间够大)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
int main()
{
	char dst[20] = "abcd";
	char src[] = "efgh";
	strcat(dst, src);
	printf("%s\n", dst);
	return 0;
}

运行结果: 

 

dst字符串变成了abcdefgh

自己模拟实现:

char* my_strcat(char* dst, const char* src)
{
	int n = strlen(dst);
	while (*src)
	{
		dst[n++] = *src++;
	}
	return dst;
}

四、strcmp函数

 

 strcmp是字符串比较函数,它是依次比较两个字符串的字符的ascll码值,一旦有一个字符不相等就给出结果,str1大返回大于0的数,str2大返回小于0的数,相等则返回0。

例如:"abcd" 和 "abd" 比较,"abd"大          "abcd" 和 "abc" 比较,"abcd"大

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	char dst[20] = "abcd";
	char src[] = "abce";
	printf("%d\n", strcmp(dst, src));
	return 0;
}

 运行结果:

模拟实现: 

int my_strcmp(const char* str1, const char* str2)
{
	while (*str1 || *str2)
	{
		if (*str1 > *str2)
			return 1;
		else if (*str1 < *str2)
			return -1;
		else
		{
			str1++; str2++;
		}
	}
	return 0;
}

五、strstr函数

 

函数作用是判断str2是否在str1内,在就返回str1内与str2相同的字串的首元素地址,不在就返回NULL 。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	char str1[20] = "abcdefg";
	char str2[] = "cde";
	printf("%s\n", strstr(str1, str2));
	return 0;
}

运行结果: 

模拟实现:

char* my_strstr(char* str1, char* str2)
{
	int len2 = strlen(str2);
	int begin1 = 0, begin2 = 0;
	while (*(str1 + begin1))
	{
		if (str1[begin1] == str2[begin2])
		{
			int cur1 = begin1 + 1;
			int cur2 = begin2 + 1;
			while (cur2 < len2)
			{
				if (str1[cur1] != str2[cur2])
					break;
				cur1++; 
				cur2++;
				if (cur2 == len2)
					return str1 + begin1;
			}
		}
		begin1++;
	}
	return NULL;
}

第一部分结束了,感谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值