C语言并没有显式的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。
NUL字节是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节。
(1)求字符串长度:strlen
(2)复制字符串:strcpy
程序员必须保证目标字符数组的空间足以容纳需要复制的字符串。如果字符串比数组长,多余的字符仍被复制,它们将覆盖原先存储于数组后面的内存空间的值。strcpy无法解决这个问题,因为它无法判断目标字符串数组的长度。
(3)连接字符串:strcat
(4)字符串比较:strcmp
如果s1小于s2,函数返回一个小于零的值,如果s1大于s2,则返回一个大于零的值,如果两个字符串相等,函数返回零。
标准库还包含了一些函数,它们以一种不同的方式处理字符串。这些函数接受一个显式的长度参数,用于限定进行复制或比较的字符数。这些函数提供了一种方便的机制,可以防止难以预料的长字符串从它们的目标数组溢出。如果strlen(src)的值小于len,dst数组就用额外的NUL字节填充到len长度。如果strlen(src)的值大于或等于len,那么只有len个字符被复制到dst中。注意,它的结果将不会以NUL结尾。
(5)在一个字符串中查找一个特定字符最容易的方法是使用strchr和strrchr函数
(6)查找任何几个字符:strpbrk
(7)查找一个子串:strstr
(8)strspn和strcspn函数用于在字符串的起始位置对字符计数
(9)查找标记:strtok,它从字符串中隔离各个单独的称为标记的部分并丢弃分隔符
(10)strerror函数把一个错误代码作为参数并返回一个指向用于描述错误的字符串的指针
(11)字符分类:iscntrl,isspace,isdigit,isxdigit,islower,isupper,isalpha,isalnum,ispunct,isgraph,isprint
(12)字符转换:tolower,toupper
(13)内存操作:memcpy,memmove,memcmp,memchr,memset