【C语言】深入精讲字符串处理函数使用与优化

目录

一、字符串处理函数

1、测量字符串的长度 strlen

2、字符串拷贝函数 strcpy/strncpy(拷贝前n个字符)

 3、字符串追加函数strcat/strncat

4、字符串比较函数strcmp

 5、字符查找函数strchr/strrchr

 6、字符串查找strstr

7、字符串替换函数memset

8、字符串 切割 strtok

 二、字符串转数值

1、函数实现

2、代码实现​编辑


一、字符串处理函数

        以str开头的函数 都是字符串操作函数 都是遇到'\0'结束操作

头文件:#include        

1、测量字符串的长度 strlen

用法:size_t strlen(const char *s);//const只读

s是需要测量字符串的首元素地址'\0'不会被测量

举例:

char str[100]="hello world";

strlen(str) == 11;

2、字符串拷贝函数 strcpy/strncpy(拷贝前n个字符)

        拷贝 src指向的字符串到dest指针指向的内存中,遇到'\0’结束并且拷贝,返回值为目的内存地址。

用法:char *strcpy(char *dest, const char *src);

           char *strncpy(char *dest, const char *src, size_t n);

dest:目的空间地址

src:原字符串的首元素地址

举例:

【C语言】深入精讲字符串处理函数使用与优化_第1张图片

 3、字符串追加函数strcat/strncat

用法:char *strcat(char *dest, const char *src);

           char *strncat(char *dest, const char *src, size_t n);

将src指向的字符串 追加到 dest指向的字符串尾部

举例: 

【C语言】深入精讲字符串处理函数使用与优化_第2张图片

4、字符串比较函数strcmp

用法:int strcmp(const char *s1, const char *s2);

           int strncmp(const char *s1, const char *s2, size_t n);

逐一比较字符ASCII码值。

返回值:

>0 字符串s1 > 字符串s2

<0 字符串s1 < 字符串s2

==0 字符串s1 == 字符串s2

举例: 

【C语言】深入精讲字符串处理函数使用与优化_第3张图片

 5、字符查找函数strchr/strrchr

用法:char *strchr(const char *s, int c);//从前往后查

           char *strrchr(const char *s, int c);//从后往前查

strchr返回值为从前往后找 第一次出现字符c的地址,若没找到,则返回NULL

【C语言】深入精讲字符串处理函数使用与优化_第4张图片

 6、字符串查找strstr

用法:char *strstr(const char *haystack, const char *needle);

返回值:找到返回找到的地址 失败 返回NULL

【C语言】深入精讲字符串处理函数使用与优化_第5张图片

7、字符串替换函数memset

用法:void *memset(void *str, int c, size_t n)

复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符

该值返回一个指向存储区 str 的指针

案例:将world替换为$$$$$

【C语言】深入精讲字符串处理函数使用与优化_第6张图片

8、字符串 切割 strtok

用法:char *strtok(char *str, const char *delim);

第一次切割:str必须指向待切割的字符串的首元素地址 delim指向分割符”|“

    后续切割:str传NULL delim指向分割符"|"

返回值: 成功:返回值子串的首元素地址

               失败:返回NULL

切割方式1:

#include 
#include
void test()
{   
	char str[] = "aaaa|bbbb|cccc|dddd";
	int i = 0;
	char *buf[30];//存放字串首元素地址
	buf[i]=strtok(str, "|");//第一次存
	while (buf[i] != NULL)
	{
		i++;
		buf[i] = strtok(NULL, "|");//后续存
	}
    //遍历切割完后的字串
	for (int j = 0; j < i; i++)
	{
		printf("%s\n", buf[i]);	
	}
}

 切割方式2:

	char str[] = "aaaa|bbbb|cccc|dddd";
	int i = 0;
	//buf[0] = str
	char* buf[30] = {str};//存放子串首元素地址
	//后续切
	int i = 0;
	while (1)
	{
		buf[i] = strtok(str[i], "|");
		if (buf[i] == NULL)
			break;
		i++;
	}

简化切割方式:

	char str[] = "aaaa|bbbb|cccc|dddd";
	//buf[0] = str
	char* buf[30] = {str};//存放子串首元素地址
	//后续切
	int i = 0;
	while ((buf[i] = strtok(buf[i], "|")) && (++i));

 二、字符串转数值

1、函数实现

头文件:#include

atoi将数值字符串 转成 int类型

atol将数值字符串 转成 long类型

atof将数值字符串 转成 float类型

【C语言】深入精讲字符串处理函数使用与优化_第7张图片

2、代码实现【C语言】深入精讲字符串处理函数使用与优化_第8张图片

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