c语言字符函数和字符串函数介绍

本文介绍了C语言中常用的字符串处理函数,如strlen、strcpy、strcat、strcmp等,详细讲解了它们的功能、用法及模拟实现。通过实例解析,帮助读者掌握字符串操作的核心技巧。

目录

前言

一、strlen函数

1.简介

2、模拟实现

2.1计数器方式

2.2递归方式

2.3指针的方式

二、strcpy函数

1.简介

2.模拟实现

三、strcat函数

1.简介

2、模拟实现

四、strcamp函数

1、简介

2、模拟实现

五、strncpy函数

六、strncat函数

七、strncmp函数

八、strstr函数

1、简介

2.模拟实现

9、strtok函数 

1、简介

2、举例

10、strerror函数

11、memcpy函数

1、简介

2、模拟实现

12、memmove函数

1、简介

2、模拟实现

 13、memcmp函数


前言

c语言中对字符和字符串的处理很频繁,但是c语言中是没有字符串类型的,字符串通常放在字符数组和常量字符串中。想要合理使用字符串,免不了调用一些函数。那么今天,我们就来一起学习一下c语言中的字符和字符串函数吧。(注意:字符串常量适用于那些不对他进行修改的函数。)


一、strlen函数

1.简介

size_t strlen ( const char * str );

  • 字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包
  • 含 '\0' )。
  • 参数指向的字符串必须要以 '\0' 结束。
  • 注意函数的返回值为size_t,是无符号的( 易错 )
#include <stdio.h>
int main()
{
	const char* str1 = "abcdef";
	const char* str2 = "bbb";
	if (strlen(str2) - strlen(str1) > 0)
	{
		printf("大");
	}
	else
	{
		printf("小");
	}
	return 0;
}

上面代码输出结果为“大”,因为strlen返回的为无符号数,无符号数相减还是无符号数,总是大于零的。

2、模拟实现

2.1计数器方式

//计数器方式
int my_strlen(const char* str)
{
	int count = 0;
	while (*str)
	{
		count++;
		str++;
	}
	return count;
}​

2.2递归方式

//不能创建临时变量计数器
int my_strlen(const char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}

2.3指针的方式

//指针-指针的方式
int my_strlen(char* s)
{
	char* p = s;
	while (*p != ‘\0’)
		p++;
	return p - s;
}

二、strcpy函数

1.简介

char* strcpy(char * destination, const char * source );  //字符串拷贝

  • 源字符串必须以 '\0' 结束。
  • 会将源字符串中的 '\0' 拷贝到目标空间。
  • 目标空间必须足够大,以确保能存放源字符串。
  • 目标空间必须可变

2.模拟实现


//1.参数顺序
//2.函数的功能,停止条件
//3.assert
//4.const修饰指针
//5.函数返回值
//6.题目出自《高质量C/C++编程》书籍最后的试题部分
char* my_strcpy(char* dest, const char* src)
{
	char* ret = dest;
	assert(dest != NULL);
	assert(src != NULL);
	while ((*dest++ = *src++))  //虽然后置++的优先级比解引用高,但由于后置++的特性,
								//虽然地址加了1,但解引用时依旧按加1前的地址操作
	{
		;
	}
	return ret;
}

三、strcat函数

1.简介

char * strcat ( char * destination, const char * source );   //字符串追

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值