本文重点介绍处理字符和字符串的库函数的使用和注意事项
求字符串长度
strlen
长度不受限制的字符串函数
strcpy
strcat
strcmp
长度受限制的字符串函数介绍
strncpy
strncat
strncmp
字符串查找
strstr
strtok
错误信息报告
strerror
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在
常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数。
一、strlen
字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。
参数指向的字符串必须要以 '\0' 结束。
注意函数的返回值为size_t,是无符号的( 易错 )
strlen函数定义:
size_t strlen(const char*string);
(strlen 是求字符串长度的,求出的长度不可能为负数,所以返回值类型是size_t)
strlen函数的模拟实现:(共3种方法)
//递归
int my_strlen1(const char* str)
{
assert(str != NULL);
if (*str != '\0')
return 1 + my_strlen(str + 1);
else
return 0;
}
//指针-指针
int my_strlen2(const char* str)
{
const char* start = str;
assert(str != NULL);
while (*str)
{
str++;
}
return str - start;
}
int my_strlen3(const char* str)
{
assert(str != NULL);
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen3(arr);
printf("%d\n", len);
return 0;
}
注:assert作用:保证指针的有效性,使程序更严谨。
assert需要引用头文件#include<assert.h>
strlen需要引用头文件#include<string.h>
二、strcpy
函数定义: