string.h库定义了size_t类型和空指针要使用的NULL宏。string.h头文件提供了一些分析和操控字符串的函数,其中一些函数以更通用的方式处理内存。下面列出了一些函数
void *memchr (const void *s,int c,size_ t n) ;
在s指向对象的前n个字符中查找是否有c。如果找到,则返
回首次出现c处的指针,如果未找到则返回NULL
int memcmp (const void*sl, const void*s2,size_ t n) ;
比较s1指向对象中的前n个字符和s2指向对象的前n个字符,每个值都解释为unsigned char类型。如果n个字符都匹配,则两个对象完全相同:否则,比较两个对象中首次不匹配的字符对。如果两个对象相同,函数返回0;如果在数值上第1个对象小于第2个对象,函数返回小于0的值:如果在数值上第1个对象大于第2个对象,函数返回大于0的值
void *memcpy(void *restrict sl, const void * restrict s2,size_ t n) ;
把s2所指向位置上的n字节拷贝到s1指向的位置上,函数
返回s1的值。如果两个位置出现重叠,其行为是未定义的
void *memmove (void*s1, const void*s2,size_ t n) ;
把s2所指向位置上的n字节拷贝到s1指向的位置上,其行为与拷贝类似,返回s1的值。但是,如果出现局部重叠情况,该函数会先把重叠的内容拷贝至临时位置
void *memset (void *s, int v, size_ t n) ;
把v的值(转换为unsigned char)拷贝至s指向的前n字节中,函数返回s
char *strcat (char *restrict s1, const char * restrict s2) ;
把s2指向的字符串拷贝到s1指向字符串后面,s2字符串的第1个字符覆盖s1字符串的空字符。该函数返回s1
char *strncat (char *restrict s1,const char * restrict s2,size_ t n) ;
把s2指向字符串的n个字符拷贝到s1指向的字符串后面(或拷贝到s2的空字符为止)。s2字符串的第1个字符覆盖s1字符串的空字符。函数返回s1
char *strcpy(char *restrict s1, const char * restrict s2) ;
把s2指向的字符串拷贝到s1指向的位置。函数返回s1
char *strncpy(char *restrict s1,const char * restrict s2,size_t n);
把s2指向字符事的n个字符拷贝到s1指向的位置(或拷贝到s2的空字符为止)。如果在拷贝n个字符之前遇到空字符,则在拷贝字符后面添加若干个空字符,使其长度为n;如果拷贝n个字符没有遇到空字符,则不添加空字符。函数返回s1
int strcmp(const char*sl, const char *s2) ;
比较sl和s2指向的两个字符串。如果完全匹配,则两字符串相同,否则比较首次出现不匹配的字符对。通过字符编码值比较字符。如果两个字符串相同,函数返回0:如果第1个字符串小于第2个字符串,函数返回小于0的值:如果第1个字符串大于第2个字符串,函数返回大于0的值
int strcoll(const char *sl, const char *s2) ;
与strcmp() 类似,但是该函数使用当前本地化的LC_ COLLATE类别(由setlocale()函数设置)所指定的排
序方式进行比较
int strncmp (const char *s1, const char *s2, size_ t n) ;
比较s1和s2指向数组中的前n个字符,或比较到第1个空字符位置。如果所有的字符对都匹配,则两个数组相同否则比较两个数组中首次不匹配的字符对。通过字符编码值比较字符。如果两个数组相同,函数返回0:如果第1个数组小于第2个数组,函数返回小于0的值:如果第1个数组大于第2个数组,函数返回大于0的值
size_ t strxfrm(char*restrict s1,const char * restrict s2,size t n);
转换s2中的字符串,并把转换后的前n个字符(包括空字符)拷贝到s1指向的数组中。用stremp ()比较转换后的两个字符串的结果和用strcoll()比较两个未转换字符串的结果相同。函数返回转换后的字符串长度(不包括末尾的空字符)
char *strchr(const char *s, int c);
查找s指向的字符串中首次出现c的位置。空字符是字符串的一部分。函数返回一个指针,指向首次出现c的位置。如果没有找到指定的c则返回NULL
size_ t strcspn(const char *s1, constchar*s2) ;
返回s1中未出现s2中任何字符的最大起始段长度
char *strpbrk(const char *s1, const char*s2) ;
返回一个指针,指向s1中与s2任意字符匹配的第1个字符的位置。如果未发现任何匹配的字符,函数返回NULL
char *strrchr(const char *S, int c);
在s指向的字符串中查找末次出现c的位置(即从s2右侧开始查找宇符c首次出现的位置)。空字符是字符串的一部分。如果找到,函数返回指向该位置的指针;如果未找到,则返回NULL
size t strspn(const char *s1, const char*s2) ;
返回s1中包含s2所有字符的最大起始段长度
char *strstr (const char *s1, const char*s2) ;
返回一个指针,指向s1中首次出现s2中字符序列(不包括结束的空字符)的位置。如果未找到,函数返回NULL
char *strtok(char *restrict s1, const char * restrict s2) ;
该函数把s1字符串分解为单独的记号。s2字符串包含了作为记号分隔符的字符。按顺序调用该函数。第1次调用时,s1应指向待分解的字符串。函数定位到非分隔符后的第1个记号分隔符,并用空字符替换它。函数返回一个指针,指向储存第1个记号的字符串。如果未找到记号,函数返回NULL.在此次调用strtok()查找字符串中的更多记号。每次调用都返回指向下一个记号的指针,如果未找到则返回NULL
char * strerror (int errnum) ;
返回一个指针,指向与储存在errnum中的错误号相对应的错误信息字符串(依实现而异)
int strlen(const char* s);
返回字符串s中的字符数(末尾的空字除外)