大家元宵节好啊,我是情谊,今天我们来讨论一下我们常见的C语言字符串函数,我们先来看一个大纲:
1求字符串长度的函数
strlen
2长度不受限制的字符串函数
strcpy 字符拷贝
strcat 字符嫁接
strcmp 字符比较
3长度受限制的字符串函数
strncpy 有限制的字符拷贝
strncat 有限制的字符嫁接
strncmp 有限制的字符串比较
4字符串查找
strstr 字符串查找
strtok 字符串断点
5错误信息报告
strerror
6内存操作函数
memcpy 内存拷贝
memset 内存初始化
以上便是我们今天讨论的内容大纲啦,话不多说,直接开始!
1 srelen size_t strlen ( const char * str );
作用:计算字符串的长度(\0之前的字符的长度)
例子:
char arr[20] = { "zhangsan"};
int ret = strlen(arr); //这样ret的值就是8
2 strcpy char * strcpy ( char * destination, const char * source );
作用:将source中的字符串拷贝到destination这个字符串里面
例子:
char name[20] = { 0 };
strcpy( * name ," zhangssan"); //这样name数组里面的字符串就是zhangsan
3 strcat char * strcat ( char * destination, const char * source )
作用:将source内的字符串追加到destination这个字符串的后面
例子:
char name[ 20 ] = {" zhangsan"};
strcat( * name ,"lisi"); //这样name数组里面的字符串就是”zhangsanlisi“
4 strcmp int strcmp ( const char * str1, const char * str2 );
作用:比较两个字符的ASCALL码值(一个一个字符的比较),str1大于str2,则返回一个正数,反之,返回一个负数
例子:
char s1 = {"abcd"};
char s2 = {"abcq"};
strcmp( * s1 , * s2); // 这里一个一个的比较,像s1中的a和s2中的a比较
5 strncpy char * strncpy ( char * destination, const char * source, size_t num );
作用:将source中的字符串自行选择个数拷贝进入destination这个字符串里面
例子:
char name [ 20 ] = { 0 }
char stu [100] = {"zhangsanlisi"};
strncpy( * name , * stu , 8}; //这样name这个数组里面的字符就是“zhangsan".
6 strncat char * strncat ( char * destination, const char * source, size_t num );
作用:将source中的字符串自行选择嫁接个数进入destination这个字符串里面
例子:
char name [ ] = {"zhangsan"};
char stu[ ] = { "lisiwangwu"};
strncat( * name , * stu , 4); //这样name这个数组里面的字符就是”zhangsanlisi“
7 strncmp int strncmp ( const char * str1, const char * str2, size_t num )
作用:比较两个字符串中有限个数的字符
例子:
char s1[ ] = { "abcdef"};
char s2[ ] = { "abcfde"};
strncmp( * s1 , * s2 ,3}; //这里比较的是两个字符串前三个字符的大小,是相同的
8 strstr
const char * strstr ( const char * str1, const char * str2 ); char * strstr ( char * str1, const char * str2 );
作用:在一个字符串中查找另一个字符串,如果存在,就将从需查找的字符串开始,全部返回
例子:
char s1 = { ”abcdefg“};
char s2 = { ”def“};
strstr(*s1 , *s2); //这里返回字符串”defg“
9 strtok char * strtok ( char * str, const char * delimiters );
作用:delimiters这个字符串中定义了分隔符,在str中进行断点
例子:
char s1 [ ] = { "zhangsan@lisi.cpp"};
char s2 [ ] = { "@, . "};
strtok(*s1 , * s2); //这里以@和 . 为分隔符将s1分隔成三部分
10 strerror char * strerror ( int errnum );
作用:将错误原因返回出来(编译器中将错误方式形成一些数字,当出现哪种类型的错误,就会返回哪个数字
例子:
printf(”%s\n",strerror(1));
printf(”%s\n",strerror(2));
printf(”%s\n",strerror(3));
printf(”%s\n",strerror(4)); //这个函数一般不会像这样单独使用,我们这样是为了直观学习
10 memcpy void * memcpy ( void * destination, const void * source, size_t num );
作用:内存拷贝,相当于strcpy的进阶版,strcpy只能拷贝字符串,但是memcpy可以拷贝多种类型的数据,只是要求两个数据是同一种类型
例子:
int arr[ ] = { 1,2,3,4,5,6,7};
int arr1 [ 10 ] = { 0 };
memcpy( * arr1 , *arr , 16); //注意,16表示的是字节数,一个整型占4个字节
11 memset void * memset ( void * ptr, int value, size_t num );
作用:修改内存中的储存数值
例子:
char arr [ ] = { "hello world"};
memset( arr , 'x' ,5); //则将arr中前5个元素替换成x
好啦,以上便是今天介绍的全部内容啦,如果内容出现一些错误的地方还请多多担待啦
如果看到这里的铁铁能否点一个赞呢?谢谢大家啦!今后我将继续努力为大家献上一点小知识啦。拜拜,下周见。