目录
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数.
一、字符串函数是什么
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数。
二、字符串函数包括哪些、如何模拟实现
1.求字符串长度函数
(1)strlen函数的注意事项
字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。参数指向的字符串必须要以 '\0' 结束。 注意函数的返回值为size_t,是无符号的( 易错 )
(2)strlen函数的三种模拟实现方法
#include<stdio.h>
//我们初衷是求字符串的长度,不会改变字符串,所以加上const使指针指向的内容不会改变,更加安全
int my_strlen(const char* str)//1.计数器方法模拟实现strlen函数
{
int counst = 0;//计数器
assert(str != NULL);//等价写法:assert(str)
//对指针解引用一定得是个有效的指针,所以需要断言str不为空指针,下面解引用的话就会更加安全
while (*str != '\0')//等价写法:while(*str)
{
counst++;
str++;
}
return counst;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
int my_strlen(const char* str)//递归的方法模拟实现strlen函数
{
if (*str != '\0')
{
return(1 + my_strlen(str + 1));
}
else
{
return 0;
}
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
int my_strlen(const char* str)//指针减指针的方法模拟实现strlen函数
{
const char* start = str;
const char* end = str;
while (*end)
{
end++;
}
return end - start;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
2.长度不受限制的字符串函数
2.字符串拷贝函数
(1)strcpy函数注意事项
源字符串必须以 '\0' 结束。
会将源字符串中的 '\0' 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。 学会模拟实现。
(2)strcpy函数的模拟实现
#include<stdio.h>
char* my_strcpy(char* str1, const char* str2)
{
char* ret = str1;//先把目标的起始地址存放在ret里。
while (*str1++ = *str2++)
{
;
}
return ret;//返回的是起始地址
}
int main()
{
char arr1[20] = "################";
char arr2[] = "bit education";
my_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
3.字符串追加函数
(1)strcat函数的注意事项
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
(3)strcat函数的模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
char* ret = dest;
//找到目标字符串\0
assert(dest
while (*dest)
{
dest++;
}
//追加源字符串
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr1[20] = "hello ";
char arr2[] = "world";
my_strcat(arr1, arr2);
printf("%s\n",arr1);
return 0;
}
4.字符串大小比较函数
(1)strcmp函数的注意事项
第一个字符串大于第二个字符串,
则返回大于0的数字 第一个字符串等于第二个字符串,
则返回0 第一个字符串小于第二个字符串,则返回小于0的数字