C语言-字符串库函数这一篇就够了

1.strlen

(1)是什么

       strlen函数是计算字符串中'\0'前面出现的字符个数,需要注意以下几点:

          1)strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包 含'\0')

          2)参数指向的字符串必须要以 '\0' 结束。

          3)注意函数的返回值为size_t,是无符号

对于第三点例如:strlen("abc")-strlen("abcdef")  那么得到的结果并不是-2,而是一个相当大的正数。

(2)怎么用

          1)头文件引用#include<string.h>

          2)参数是所求字符串长度的起始地址

(3)如何实现

        有多种方法可以实现,以下是通过计数器的方法实现。

int my_strlen(char* arr)
{
	int count = 0;
	while (*arr != '\0')
	{
		count++;
		arr = arr + 1;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	int ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

2.strcpy

(1)是什么

       将源指向的C字符串复制到目标指向的数组中,包括终止字符‘\0’,并在该点停止,需要注意以下几点:

          1)源字符串必须以 '\0' 结束

          2)会将源字符串中的 '\0' 拷贝到目标空间

          3)目标空间必须足够大,以确保能存放源字符串。

          4)目标空间必须可变

对于第四点,例如:

char* str = "*************";

char* p = "hello";

strcpy(str, p);         

这样就不可以,因为str所给的是一个常量字符串,是不能改动的,因此便会出现报错

(2)怎么用

          1)头文件引用#include<string.h>

          2)第一个参数是目标字符串的所要被复制部分的起始地址,第二个参数是要用来复制的字符串的起始地址。

(3)如何实现

void my_strcpy(char* str1, char* str2)
{
	while (*str2 != '\0')
	{
		*str1 = *str2;
		str1++;
		str2++;
	}
	*str1 = *str2;
}
int main()
{
	char arr1[10] = "abcdef";
	char arr2[] = "ghc";
    my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

3.strcat

(1)是什么

       将源指向的字符串追加到目标指向的数组中,包括终止字符,需要注意以下几点:

          1)源字符串必须以 '\0' 结束

          2)目标空间必须有足够的大,能容纳下源字符串的内容。

          3)会将源字符串中的 '\0' 拷贝到目标空间

          4)目标空间必须可变

          5)目标空间所追加的起点是'\0'

对于3)5)可以通过以下例子了解,

例:char arr1[20] = {"abcde \0********"};char arr2[] = "fgh";

结果是

(2)怎么用

          1)头文件引用#include<string.h>

          2)第一个参数是目标字符串的起始地址,第二个参数是要用来追加的字符串的起始地址。

(3)如何实现

char *my_strcat(char* dest, const char* src)
{
	char* ret = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while ((*dest = *src)!='\0')
	{
		dest++;
		src++;
	}
	return ret;
}
int main()
{
	char arr1[20] = {"abcde \0*********"};
	char arr2[] = "fgh";
	my_strcat(arr1, arr2);
	return 0;
}

4.strcmp

 (1)是什么

         比较两个字符串,最开始是比较两个字符串中的第一个字符,如果它们彼此相等,则继续继续下面字符的比较,直到字符不同或达到终止的空字符。需要注意:

          1)第一个字符串大于第二个字符串,则返回大于0的数字

          2)第一个字符串等于第二个字符串,则返回0

          3)第一个字符串小于第二个字符串,则返回小于0的数字

(2)怎么用

          1)头文件引用#include<string.h>

          2)第一个参数是第一个字符串的起始地址,第二个参数是第二个字符串的起始地址。

 (3)如何实现

int my_strcmp(const char* p,const char* q)
{
	while (*p == *q)
	{
		if (*p == '\0')
		{
			return 0;
		}
		p++;
		q++;
	}
	return*p - *q;
}
int main()
{
	const char* p = "aabbcd";
	const char* q = "aaabcd";
	int ret = my_strcmp(p, q);
	if (ret > 0)
	{
		printf("p>q");
	}
	else if (ret < 0)
	{
		printf("p<q");
	}
	else
		printf("p=q");
	return 0;
}

5.strncpy

 (1)是什么

         拷贝num个字符从源字符串到目标空间。

(2)怎么用

1.

2.

3.

6.strncat

 (1)是什么

         将源字符串的前 num 个字符附加到目标字符串当中 ,外加一个终止字符'\0',如果源字符串的 lenoth小于 num,则仅复制终止字符之前的内容。

 (2)怎么用

         需要注意以下几点:

          1)目标空间所追加的起点是'\0'

          2)会追加'\0' 到目标空间(即使在num小于源字符串lenth的情况下)。

          3)即使num大于源字符串长度,在目标字符串当中也不会过多追加'\0'

1.

2.

7.strncmp

 (1)是什么

         比较字符串 str1 的字符数与字符串 str2 的字符数。此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续处理,直到字符不同,直至终止字符,或者到两个字符串中的 num个字符比较结束,以先发生者为准

  (2)怎么用 

          需要注意,只要在第n个字符之前有相对应的字符比较出来了大小,那么大小便以比较出来,无关后面相对应字符的大小。

1.

2.

8.strstr

  (1)是什么

          返回指向 str1 中第一次出现的 str2 的地址,如果 str2 不是 str1 的一部分,则返回 null 指针。匹配过程不包括终止 null 字符,但会在此处停止。

   (2)怎么用 

1.找到就返回第一次出现的起始地址

2.找不到就返回空指针 

int main()
{
	char str[20] = "aaabbbccc";

	 char p[] = "bcc";

	char* a = strstr(str, p);
	printf("%s\n", a);//bccc
	return 0;
}

 (3)如何实现

char* my_strstr(char* str1, char* str2)
{
	char* cp = str1;
	char* s = str2;
	while (*str1 != *str2)
	{
		str1++;
		cp++;
	}
	while (*str1 == *str2)
	{
		str1++;
		str2++;
		while (*str1 && *str2 && *str1 != *str2)
		{
			str2 = s;
			cp++;
			str1 = cp;
		}
		if (*str2 == '\0')
		{
			return cp;
		}
	}
	return NULL;
}
int main()
{
	char str[10] = "aaabbbccc";

	char p[] = "abb";

	char* a = my_strstr(str, p);
	printf("%s\n", a);
	return 0;
}

9.strtok

  (1)是什么

char * strtok ( char * str, const char * sep );

          sep参数是个字符串,定义了用作分隔符的字符集合,第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。

          strtok函数找到str中的下一个标记,并将其用 \0 结尾返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)

           strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置

           strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标 记。

            如果字符串中不存在更多的标记,则返回 NULL 指针

    (2)怎么用 

int main()
{
	const char* p = "hangzhou@yayun.com";
	char arr1[30];
	char arr2[] ="@.";
	strcpy(arr1, p);
	//char* s = strtok(arr1, arr2);
	//printf(" %s\n", s);
	//s = strtok(NULL, arr2);
	//printf(" %s\n", s);
	//s = strtok(NULL, arr2);
	//printf(" %s\n", s);
    for (char* s = strtok(arr1, arr2); s != NULL; s = strtok(NULL, arr2))
	{
		printf("%s\n", s);
	}
	return 0;
}

10.strerror

   (1)是什么

           返回错误码,所对应的错误信息。

 

"C语言字符串处理库函数大全-简书"是一篇在简书上的教程,介绍了C语言中常用的字符串处理库函数。 该教程详细介绍了C语言字符串操作的相关函数,包括库函数的使用方法和示例代码。通过该教程,读者可以学习到如何使用C语言中的字符串处理函数来进行字符串的复制、连接、比较、查找、截取等操作。 在这篇教程中,读者可以了解到以下一些常见的字符串处理库函数: 1. strcpy:用于将一个字符串复制到另一个字符串中。 2. strcat:用于将一个字符串连接到另一个字符串的末尾。 3. strlen:用于计算一个字符串的长度。 4. strcmp:用于比较两个字符串的大小。 5. strchr:用于在一个字符串中查找指定字符的第一次出现位置。 6. strstr:用于在一个字符串中查找指定子串的第一次出现位置。 7. strtok:用于将一个字符串按照指定的分隔符分割成多个子串。 8. strncpy:用于将指定长度的字符串复制到目标字符串中。 9. strncmp:用于比较指定长度的两个字符串。 10. sprintf:用于将格式化的字符串输出到一个字符数组中。 这些函数在C语言中非常常用,并且对于字符串的处理非常方便。通过学习和掌握这些字符串处理库函数,可以更加高效地完成C语言程序中的字符串操作。 总之,"C语言字符串处理库函数大全-简书"这篇文章提供了丰富的字符串处理库函数以及示例代码,对于C语言开发者来说是一个很好的参考和学习资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值