几个比较重要的字符串函数
1.求字符串长度的函数———>strlen
2.长度不受限制的字符串函数———>strcpy、strcat、strcmp
3.长度受限制的字符串函数——>strncpy、strncat、strncmp
4.字符串查找——>strstr、strtok
5.错误信息报告——>strerror
1.求字符串长度的函数
这个求字符串长度的函数是以‘\0’为结束标志,strlen返回的是\0前面的字符串,
例如我输入abcdefgh,每一个字符串后面都有\0,所以strlen这个函数的作用就是返回\0前面的那些字符串,'\'是strlen的结束标志,要牢记这一点,strlen的结束标志是'\0'
strlen的模拟实现代码
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
int my_strlen(const char* str)
{
int count=0;
assert(str!=NULL);
while(str!=''\0)
{
count++;
str++;
}
return count;
}
int main()
{
int len = my_strlen("abcdef");
}
另外要特别注意size_t,size_t是什么呢?size_t是strlen的类型,size_t是typedef重命名的unsigned int 叫做无符号整型,所以size_t==unsigned int
所以如果输入的两个字符串相减是负数,然后unsigned int 又会重新把它变成正号
2.长度不受限制的字符串函数——>strcpy
strcpy有几个受制于几个条件我们来列举一下
1.首先你要获取的那个字符串函数必须得是以\0结尾
2.存储的空间要足够大
3.另外会将要获取的字符串函数结尾的\0也给移过来
我们来通过一段代码来解释
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char arr1="abcdef";
char arr2="bit";
strcpy(arr1,arr2);
return 0;
}
那么源字符串arr1的字符会全部被替换为bit
下面这段代码是strcpy的模拟实现
my_strcpy(char* dest,char* str)
{
assert(dest!=NULL);
assert(str!=NULL);
char* ret=dest;
//拷贝src指向的字符串到dest指向的空间,包含‘\0’
while(*dest++==*str++)
{
;
}
//返回目的空间的起始地址
return ret;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char arr1="abcdef";
char arr2="bit";
my_strcpy(arr1,arr2);
return 0;
}
如果目标空间不够大,那么就有可能会越界访问
(2)strcat函数
char* strcat(char* destination,const char *source);
要注意下面几点
1.源字符串必须以‘\0’结束
2.目标空间必须足够大,能够容纳下源字符串的内容,否则可能会出现越界
3.目标空间必须可以被修改
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char arr1[30]="hello";
char arr2="world"
strcat(arr1,arr2);
printf("%s\n",arr1);
return 0;
}
arr1中的字符串这次就不会像前面几个函数会直接把他们呢替换,这个函数会在hello的后面加上world所以这个printf打印的是helloworld。
由于今晚时间比较晚,白天要准备期末考试,所以只能晚上抽出一些时间,最近没有时间也csnd了所以,明天接着把这次的补上,不要太过于的相信自己的一次性的力量,而要相信自己长期的力量,我们长期的力量会远远的大于自己的一次性力量,只要坚持下去,即使不用花很多钱报班,养成一个写代码的习惯,并且养成一个每天都有学习新知识的习惯,那么困难什么的都是浮云,在你面前就没有什么困难,其实这不是卷,这是让自己内心平静下来的一种方式。追随自己的内心,加油