1.strlen
使用:
往strlen传入一个char*的指针,会返回这个字符串的长度。(不包含'\0')
返回值是size_t类型的,也就是unsigned int,所以要用zd打印。
头文件为<string.h>
例:
实现
size_t my_strlen(char* str)
{
size_t m = 0;
for (m = 0;*str++; m++)
{
;
}
return m;
}
str解引用后代表该字符串中元素,如果是\0的话退出,不是的话计数器m++,m即为字符串长度。
2.strcpy
使用
strcpy用于拷贝字符串,包括‘\0’,返回值为被拷贝的字符串首元素地址。
头文件<string,h>
如果被拷贝的字符串容量不够会报错
例:
实现:
char* my_strcpy(char*str1,const char*str2)
{
char* dest = str1;
while (*str1++ = *str2++)
;
return dest;
}
3.strcat
使用
strcat用于追加字符串,会顶掉源字符串的”\0“,返回值为被改变的字符串首元素地址。
头文件<string,h>
strcpy用于拷贝字符串,包括‘\0’,返回值为被拷贝的字符串首元素地址。
头文件<string,h>
例
实现
char* my_strcat(char* str1, const char* str2)
{
char* dest = str1;
while (*str1++)
;
str1--;
while (*str1++ = *str2++)
;
return dest;
}
4.strcmp
使用
这个函数用于按字符的编码值比较两个字符串的大小,如果第一个字符串小,返回一个小于0的数反之同理
实现
int my_strcmp(char* s1, char* s2)
{
char* p = s1;
while (1)
{
if (*s1 - *s2 > 0)
return 1;
else if (*s1 - *s2 < 0)
return -1;
else
*s1++;
*s2++;
if (*s1 && *s2)
return 0;
}
}
5.strncpy
相较于strcpy 只是在传参是需要多传入一个size_t类型的参数代表拷贝数代表需拷贝数。这个数可以大于第二个字符串的长度
6.strncat&&strncmp
类似的都只是需要多一个传入参数