C中部分的字符函数
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。 字符串常量适用于那些对它不做修改的字符串函数.

对于字符串的使用,还是不太够方便。例如想要在结构体赋值的使用,使用字符串,就会出错。

学习函数,就要知道函数的名字、参数、返回类型。
1.strlen
strlen函数的功能:统计字符串中字符总个数。


注:
1.strlen的参数只需要一个,而且是 “ const char * ” 类型,是常量字符或常量字符串。
2.参数指向的字符串必须要以'\0'结束。
3.函数的返回值为size_t,是无符号的。
2.strcpy




注:
1.strcpy的第一个参数类型是 “ char * ” ,必须是可修改的,字符数组或者是别的。第二个参数的类型是 “ const char * ” ,是常量字符或常量字符串。
2.strcpy函数实现的功能:把一个字符串拷贝到另一个字符串里面。也就是说,用来赋值字符串。
3.源字符串必须以 '\0' 结束。
4.会将源字符串中的 '\0' 拷贝到目标空间。
5.目标空间必须足够大,以确保能存放源字符串。
3.strcat
strcat函数实现的功能:在目的字符串“\0”开始(会覆盖掉\0),再追加字符串,并在最后加\0。




注:
1.strcat的参数和strcpy一样,第一个参数类型是“ char * ”、 第二个参数类型是“ const char * ”。甚至返回类型都是 “ char* ”。
2.功能:strcat的结果是 “ destination+suouce ”。strcpy的结果是“ source ”。strcat不能自己给自己追加,但是strcpy可以自己给自己复制(虽然不提倡这种做法)。
3.strcpy和strcat都会把源字符串的‘ \0 ’复制给目的字符串。
3.源字符串必须以 '\0' 结束。
4.目标空间必须有足够的大,能容纳下源字符串的内容(包括\0)。
5.目标空间必须可修改。
6.不能自己给自己追加字符串。
4.strcmp

所以,字符的比较,其实就是值的比较。而值与值比较,肯定有大小关系了,以这种大小关系作为函数的返回值。




注:
1.strcmp的参数都是“ const char * ”,都是常量字符串,只可读不可写。
2.strcmp的功能:判断两个字符串的大小关系。
3.返回值的确定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
5.strncpy





注:
1.strncpy的参数比strcpy的参数多一个 “ num ” ,所以名字多一个n。
2.功能:strncpy也是给字符串赋值,但是由于num的限制,并不是把源字符串全都都复制过去。
3.与strcpy的区别:
1.strncpy不会将源字符串的' \0 '也复制给目的字符串。
2.strncpy不能自己给自己赋值,因为不会复制完num个字符后,不会添加 ' \0 ' 。也就是说strncpy自己给自己复制,不会有改变,这一点和strcpy一样,自己给自己赋值,不会有改变。但还是有区别的,与编译器的优化有关编译器可能会将 strcpy(c1, c1) 优化为无操作,但 strncpy(c1, c1, 4) 可能不会被优化,因为它需要复制指定数量的字符。所以说,strcpy和strncpy不要自己对自己操作,此时有另一种解决办法——mermove。
4.如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
6.strncat

注:
1.strncpy的参数比strcpy的参数多一个 “ num ” ,所以名字多一个n。
2.功能:strncpy也是给字符串赋值,但是由于num的限制,并不是把源字符串全都都复制过去。
3.strcat和strncat的区别:
1.strcat不能自己给自己追加,strncat可以自己给自己追加。
2.strcat会加\0,strcncat也会加\0。但是两者都有一个问题,如果目的空间刚好不够放\0,那么虽然不会报错,但是打印结果的时候就会出错了,因为\0丢失了。

所以说,在用strcat和strncat的时候,最起码保证目的字符串的最后一个空间能够放下‘ \0 ’。
7.strncmp

注:
1.结束情况:
1.比较到出现不一样的字符。
2.一个字符串结束。
3.num个字符全部比较完。
2.strcmp和strncmp的区别:比较个数不一样。函数结束的情况不一样。
3.strcmp、strncmp、memcmp的区别与联系,在介绍memcmp的时候会一起说明。
8.strstr



注:
这里需要注意的就是strstr的参数了,目的字符串可以是字符数组也可以是常量字符串。
9.strtok
功能:将字符串 str 按照分隔符 delim 分割成一系列子字符串









注:
1.注意参数的类型,第一个参数是字符数组,第二个参数是字符常量。
2.注意调用的格式,如果一直对一个字符串进行操作,那么strtok的第一个参数是字符串的首地址,第二次及以后都是NULL。而第二个参数,一直都是分隔符。
3.strtok函数会将原字符串进行修改,所以我们根据字符符号进行分割之前,先将原字符数组进行保存。
4.连续分隔符被当作一个处理。也就是说,如果连续的分隔符之间有空格,并不会当做新的字符串进行输出。
10.strerror


功能:将错误代码 errnum,转换为对应的错误描述字符串。
注:
1.使用时必须包含的头文件 <error.h>
2.perror也是对错误信息的处理,而且比strerror更简单。strerror更灵活一点。
更多推荐



所有评论(0)