本章重点:本文章重点介绍字符和字符串函数的库函数的使用和注意事项。 函数介绍:1. strlen(字符串长度)
size_t strlen(const char *str);
使用strlen函数我们需要记住以下几点: 1:字符串以' '作为结束标志,strlen函数返回的是在字符串中‘ ’前面出现的字符个数(不包含‘ ’); 2:参数指向的字符串必须要以‘ ’结束; 3:注意函数返回值是无符号的; strlen的自实现:原理还是比较简单的,我们可以通过指针访问字符串,通过计数器来获取字符的长度。c语言中自身是没有字符串类型的,字符串通常放在常量字符串中,或者字符数组中。字符串以' '作为结束标志,通过访问的地址内容不是' ',则计数器加一。
#include#include int my_strlen(char *ch) { int count = 0; while (*ch++) { count++; } return count; } int main() { char ch[] = "Hello"; printf("%dn", my_strlen(ch)); }
方法二:通过递归实现。
int my_strlen(char *string)
{
if (*string == ' ')
return 0;
else
return 1 + my_strlen(string+1 );
}
2、strcpy函数(字符串拷贝)
char *strcpy(char *destination,const char*source)
使用strcpy函数我们需要记住以下几点: 第一:源字符串以' '作为结束。 第二:目标空间必须足够大,以确保能存放源字符串。 第三:目标空间必须可变。
strcpy函数自实现 :原理就是通过指针实现字符串的拷贝复制。为了实现链式连接,返回内容为指向目标内存的地址指针,所以返回函数为char *类型。基本实现步骤是参数检查,保护参数,拷贝复制。
char *my_strcpy(char *destination,const char *source)
{
//参数检查
assert(*destination!=0&& *source!=0);
//保护参数
char *dest = destination;
//拷贝复制
while (*source!=' ')
{
*dest++= *source++;
}
*dest = ' ';
return destination;
}
int main()
{
char ch[20] = "o";
char *ch1 = "bnb";
printf("%sn", strcpy(ch, ch1));
printf("%sn", my_strcpy(ch,ch1));
}
3.strcat函数(字符追加/连接函数)
char *strcat(char *destination,const char *source)
使用strcat函数我们需要记住以下几点: 第一:源字符串以' '作为结束。 第二:目标空间必须足够大,以确保能存放源字符串。 第三:目标空间必须可修改。
strcat函数自实现:strcat函数是将源字符串的内容连接到目标字符串的后面,得到一个组合后的字符串。基本步骤是首先找到目标字符串的' '位置,通过指针指向‘ ’的位置,在通过拷贝复制的方式将源字符串拷贝到目标字符串中。
char *my_strcat(char *destination,const char *source)
{
char *dest = destination;
while (*dest!=' ')
{
dest++;
}
while (*source!=' ')
{
*dest++ = *source++;
}
*dest = ' ';
return destination;
}


