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

目录

前言

一、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 
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 * s

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