常见string库中的函数(C语言超详细)
文章目录
- strcspn
- strcpy
- strncpy
- strcat
- strncat
- strcmp
- strncmp
- strchr
- strrchr
- strstr
- strtok
- strlen
- strnlen
strcspn
原型:
size_t strcspn(const char *str1, const char *str2);
功能:
strcspn 会扫描 str1,并返回一个整数,表示 str1 中第一个匹配 str2 中任意字符的位置(从 0开始计数)。如果没有匹配的字符,返回 str1 的长度
注意事项
空字符集:如果 str2 为空字符串,返回 str1 的长度。
无匹配字符:如果 str1 中没有任何字符与 str2 匹配,返回 str1的长度。
按顺序匹配:str2 中的字符按顺序匹配 str1 中的字符,找到第一个匹配即可
strcpy
原型:
char* strcpy(char* dest, const char* src);
功能:
strcpy函数将src字符串(包括终止的空字符’\0’)复制到dest所指向的内存区域。
注意事项:
确保dest有足够的空间来容纳src字符串,包括终止的空字符,否则会导致缓冲区溢出。 src和dest不能指向相同的内存区域。
strncpy
原型:
char* strncpy(char* dest, const char* src, size_t n);
功能:
strncpy函数将src字符串的前n个字节复制到dest所指向的内存区域。如果src字符串的长度小于n,则剩余的字节用空字符’\0’填充。
注意事项:
如果src字符串的长度大于或等于n,dest可能不会以空字符终止,这可能导致后续操作出现问题。
使用strncpy时需要特别小心,确保dest字符串以空字符终止。
strcat
原型:
char* strcat(char* dest, const char* src);
功能:
strcat函数将src字符串(包括终止的空字符’\0’)追加到dest字符串的末尾。
注意事项:
确保dest有足够的空间来容纳追加的src字符串,包括终止的空字符,否则会导致缓冲区溢出。 dest必须是一个空终止的字符串。
strncat
原型:
char* strncat(char* dest, const char* src, size_t n);
功能:
strncat函数将src字符串的前n个字节追加到dest字符串的末尾,并确保dest以空字符终止。
注意事项:
如果src字符串的长度小于n,dest将包含src的所有字符,并以空字符终止。
如果src字符串的长度大于或等于n,dest将包含src的前n个字节,并以空字符终止。
strcmp
原型:
int strcmp(const char* str1, const char* str2);
功能:
strcmp函数比较两个字符串str1和str2,按照字典顺序返回比较结果。
返回值小于0表示str1小于str2
返回值等于0表示str1等于str2
返回值大于0表示str1大于str2
注意事项:
比较是基于字符的ASCII值。
比较直到遇到第一个不匹配的字符或遇到空字符’\0’。
strncmp
原型:
int strncmp(const char* str1, const char* str2, size_t n);
功能:
strncmp函数比较两个字符串str1和str2的前n个字节,按照字典顺序返回比较结果。
返回值小于0表示str1的前n个字节小于str2的前n个字节
返回值等于0表示str1的前n个字节等于str2的前n个字节
返回值大于0表示str1的前n个字节大于str2的前n个字节
注意事项:
比较的是前n个字节,不考虑字符串的实际长度。 如果n为0,返回0。
strchr
原型:
char* strchr(const char* str, int ch);
功能:
strchr函数在字符串str中查找第一个等于ch的字符,并返回指向该字符的指针。如果未找到,返回NULL。
注意事项:
ch参数是一个int,但实际上只使用其最低字节,并且被转换为unsigned char进行比较。 查找包括字符串的终止空字符’\0’。
strrchr
原型:
char* strrchr(const char* str, int ch);
功能:
strrchr函数在字符串str中查找最后一个等于ch的字符,并返回指向该字符的指针。如果未找到,返回NULL。
注意事项:
ch参数同strchr。 同样包括字符串的终止空字符’\0’。
strstr
原型:
char* strstr(const char* haystack, const char* needle);
功能:
strstr函数在字符串haystack中查找第一个出现的子字符串needle,并返回指向该子字符串起始位置的指针。如果未找到,返回NULL。
注意事项:
查找是基于字节的精确匹配。 needle可以是空字符串,此时返回haystack本身。
strtok
原型:
char* strtok(char* str, const char* delim);
功能:
strtok函数用于将字符串str分割为多个 tokens,根据delim参数指定的分隔符。
使用方法:
第一次调用strtok时,str指向要分割的字符串,delim指定分隔符。
后续调用strtok时,str设为NULL,继续从前一次返回的位置开始分割。
注意事项:
strtok修改原始字符串,在字符串中插入空字符’\0’来分割tokens。
不是线程安全的,因为它使用静态变量保存状态。
strlen
原型:
size_t strlen(const char* str);
功能:
strlen函数计算字符串str的长度,不包括终止的空字符’\0’。
注意事项:
直到遇到第一个空字符’\0’才停止计数。 如果字符串没有终止的空字符,行为未定义。
strnlen
原型:
size_t strnlen(const char* str, size_t maxlen);
功能:
strnlen函数计算字符串str的长度,最多检查maxlen个字节,返回实际的长度,不包括终止的空字符’\0’。
注意事项:
如果在maxlen字节内找不到空字符’\0’,返回maxlen。
这是一个安全的版本,避免了潜在的缓冲区溢出。