【C语言】字符函数和字符串函数

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【C语言】字符函数和字符串函数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言:

作者简介:爱吃大白菜1132

人生格言:纸上得来终觉浅,绝知此事要躬行

 

如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步!

 

如果觉得博主文章还不错的话,希望三连支持!

目录

1.strlen()函数

函数参数

返回值

strlen()函数模拟

2.strcpy()函数

函数参数

返回值

strcpy()函数模拟

3.strcat()函数

函数参数

返回值

strcat()函数模拟

4.strcmp()函数

函数参数

返回值

strcmp()函数模拟

5.strtok()函数

函数参数

返回值

6.strstr()函数

函数参数

返回值

strstr()函数模拟


1.strlen()函数

定义:strlen()函数是计算字符串长度的函数,将字符串中的 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包 含 ‘\0’ )。


函数参数

strlen(const char* str)

返回值

无符号数


strlen()函数模拟

#include <stdio.h>
#include  <assert.h>
size_t my_strlen(const char* str)
{
    assert(str);//判断数组是否为空
	char* start = str;
	char* end = str;
	while (*end != '\0')
	{
		end++;
		
	}
	return end - start;
}
int main()
{
	char arr[] = "abcde";
	int ret = my_strlen(arr);
	printf("%d\n ", ret);
	return 0;
}

图解:

【C语言】字符函数和字符串函数

2.strcpy()函数

定义:strcpy()函数是复制字符的函数,将源字符串拷贝到目标空间,源字符串必须以 ‘\0’ 结束。 目标空间必须足够大,以确保能存放源字符串, 目标空间必须可变。


函数参数

//第一个是目标地址,第二个是源地址
char* strcpy(char*dest,const char* src)

返回值

字符串


strcpy()函数模拟

#include <stdio.h>
char* my_strcpy(char* a1, const char* a2)
{
	assert(a1 && a2);//断言
	char* ret = a1;
	while (*a1++ = *a2++)
	{
		;
	}
	return a1;
}

int main()
{
	char arr1[] = "abi";
	char arr2[] = "abc";
	char ret=my_strcpy(arr1, arr2);

	printf("%s", ret);
	return 0;
}

3.strcat()函数

定义:strcat()函数将源字符串的副本追加到目标字符串。目标中的终止空字符被的第一个字符覆盖,并且空字符包含在由目标中两者的串联组成的新字符串的末尾。源字符串必须以 ‘\0’ 结束。 目标空间必须有足够的大,能容纳下源字符串的内容。 目标空间必须可修改。


函数参数

//第一个是目标地址,第二个是源地址
char* strcat(char* dest, const char* src)

返回值

字符串


strcat()函数模拟


char *mystrcat(char *dest,const char *src)
{
	char *start = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	while (*dest++ = *src++)
	{
		;
	}
	return start;
}
int main()
{
	char dest[100] = "abc";
	char src[] = "def";
	printf("%s\n",mystrcat(dest,src));
 
 
 
	return 0;

}

4.strcmp()函数

定义:对字符串进行比较,比较内容是ASCII码。


函数参数

int strcmp(cnost char* str1,const char* str2)

返回值

大小比较 返回值
一个字符串大于第二个字符串 返回大于0的数字
一个字符串等于第二个字符串 返回等于0的数字
一个字符串小于第二个字符串 返回小于0的数字

strcmp()函数模拟

int my_strcmp(const char* a1,const char* a2)
{
	assert(a1 && a2);
	while (*a1==*a2)
	{
		if (*a1 == '\0')
		{
			return 0;
		}
		a1++;
		a2++;
	}
	return *a1 - *a2;
}
int main()
{
	char arr1[] = "abi";
	char arr2[] = "abc";
	int ret=my_strcmp(arr1, arr2);
	printf("%d", ret);
	return 0;
}

5.strtok()函数

定义:将str字符串按照sep数组中所给的分隔符将其分割。会使用’\0’分割。

strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。


函数参数

char* strtok ( char* str, const char* sep );
//第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标
记。
//果字符串中不存在更多的标记,则返回 NULL 指针。

返回值

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

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

【C语言】字符函数和字符串函数

6.strstr()函数

定义:str1是总串,str2是需要匹配的第一个字串位置。


函数参数

char * strstr ( const char *str1, const char * str2);

返回值

返回值为char*类型,如果找不到则返回空指针(NULL)

strstr()函数模拟

char *  strstr (const char * str1, const char * str2)
{
        char *cp = (char *) str1;
        char *s1, *s2;
        if ( !*str2 )
            return((char *)str1);
        while (*cp)
       {
                s1 = cp;
                s2 = (char *) str2;
                while ( *s1 && *s2 && !(*s1-*s2) )
                        s1++, s2++;
                if (!*s2)
                        return(cp);
                cp++;
       }
        return(NULL);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/150330.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!