目录
前言
以下函数都是库函数,要使用下列函数时要引用头文件<string.h>
求字符串长度
strlen
长度不受限制的字符串函数
strcpy,strcat,strcmp
长度受限制的字符串函数
strncpy,strncat,strncmp
字符串查找
strstr strtok
错误信息报告
strerror
字符操作
一.strcpy
这个函数将一个字符串中的内容拷贝到另一个字符串,要求被拷贝字符串的字符串长度要小于目标字符串,不然就会拷贝失败,编辑器会报错。
char* strcpy (char* destination,char* source)
下面是实现my_strcpy
二.strlen
该函数会计数\0之前的元素数目。且返回类型是size_t是无符号整形,该点需要特别注意。
三.strcmp
用于比较两个字符串.函数原型是
int strcmp(const char* str1,const char*str2);
返回值:如果str1 < str2返回0;否则返回一个大于0 的数(返回str1的ASCII码值相减)
这个函数看起来这么简单,我们就不进行实测了,让我们来实现一下mystrcmp吧!
int my_strcmp(const char* str1,const char*str2)
{
while(*str1 && *str2 && *str1==*str2)
{
s1++;
s2++;
}
return *s1 - *s2;
}
这里一定要注意while里面的*str1和*str2一定不要忘记(我也忘了好多次),不然如果两个前面一样,但多了几个元素,这个函数会出问题的
四.strcat
是C语言中的字符串拼接函数,函数原型
char* strcat(char *destination, const char* source);
功能
将source的字符串的内容连接到destination字符串的末尾.destination字符串必须要留有足够大的空间否则可能会导致缓冲区溢出的问题
实现原理
strcat会找到destination中的字符串末尾(\0),将从'\0'开始覆盖source的内容直到遇到source的'\0',
让我们来看看案例
#include<string.h>
#include<stdio.h>
int main()
{
char str1[30] = "hello ";
char str2[] = "world";
strcat(str1,str2);
printf(str1);
return 0;
}
结果是
"hello world"
该函数有返回值,返回的是目标字符串的首地址
老规矩让我们来实现一下my_strcat
char* strcat(char *destination, const char* source)
{
char* tmp = destination;
while( *destination!='\0')
{
destination++;
}
while( *source!='\0')
{
*destination++ = *source++;
}
return tmp;
}
长度受限制的字符串函数
strncpy,strncat,strncmp
就连在一起讲吧