建议:自己复现,加深印象。

使用参考: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个字节都置为指定值。