建议:自己复现,加深印象。
使用参考:MSDN、https://cplusplus.com/
1.字符串处理函数——string.h
1)strlen()
2)strcpy()
必须要有\0作为结尾标志,并且会把源字符串包括\0在内的所有字符都拷贝到目的字符串中。
注意:目的字符串必须足够大,能够放得下,不够大时strcpy不会管那么多,直接往后面越界存放。目标字符串必须是可修改的,不是常量区的。
3)strcat()
从目标字符串的\0处开始追加源字符串的所有字符,包括\0。
注意:目标字符串必须足够大。尽量不要自己给自己追加,结果会因为语言标准不同而不同。
4)strcmp()
比较相同位置上的字符大小,知道\0。
5)strncpy()——拷贝前n个字符,当源字符串不够n时会把\0多次拷贝
6)strncat()——追加源字符串前n个字符,并且会把\0追加上,源字符串不够时,只会追加到\0。
7)strncmp()——只比较前n个字符
8)char* strstr(const charstr1, const char str2)——判断str2是否为str1的字串,是的话返回str2在str1中第一次出现的地址。
9)char* strtok(charstr, const char sep)——切割函数,会改变被分割函数str
sep用作分割字符的集合。
- 当str不为NULL时,函数会找到str中第一个切割标记,strtok会保存他在字符串中的位置(静态指针变量)。
- 当str为NULL时,strtok会在同一个字符串中被保存的位置开始,查找下一个标记,如果字符串中不存在更多标记,则返回NULL。
所以,strtok一般会第一次使用传入需要分割的字符串拷贝的首地址,然后后续传入NULL来配合使用。
10)strerror()——将错误码转换成错误信息字符串,并返回字符串的首地址。
11)字符分类函数:ctype.h
iscntrl、isspace、isdigit、isxdigit、islower(小写字母)、isupper(大写字母)、isalpha(字母)、isalnum(字母或者数字)、ispunct(标点——任何不是字母数字和图像字符,可打印)、isgraph(任何图形字符)、isprint(任何可打印字符,包括图形字符和空白字符)。
12)字符转换函数:ctype.h
toupper、tolower:大小写转换,形参和返回值都是int(Ascll)。
2.内存操作函数
精度为字节,string.h
1)memcpy:将源地址往后的n个字节都拷贝给目的地址往后的n个字节内存。
2)memmove:解决memcpy不能对同意内存区域的有重叠的拷贝。
注意:现在有些库函数memcpy已经和memmove功能一样强大,但是不是所有的编译器下的memcpy都能够实现memmove功能。
3)memcmp:比较源地址和目的地址前n个字节存放的熟知的大小。
4)memset:将目的地址往后的n个字节都置为指定值。