转自:http://www.360doc.com/content/12/1224/10/3478092_255969530.shtml
Linux内核中关于字符串的相关操作,首先包含头文件:
- #include <linux/string.h>
可用函数包括如下:
lib/string.c
- int strnicmp(const char *s1, const char *s2, size_t len)
- int strcasecmp(const char *s1, const char *s2)
- int strncasecmp(const char *s1, const char *s2, size_t n)
- char *strcpy(char *dest, const char *src)
- char *strncpy(char *dest, const char *src, size_t count)
- size_t strlcpy(char *dest, const char *src, size_t size)
- char *strcat(char *dest, const char *src)
- char *strncat(char *dest, const char *src, size_t count)
- size_t strlcat(char *dest, const char *src, size_t count)
- int strcmp(const char *cs, const char *ct)
- int strncmp(const char *cs, const char *ct, size_t count)
- char *strchr(const char *s, int c)
- char *strrchr(const char *s, int c)
- char *strnchr(const char *s, size_t count, int c)
- char *skip_spaces(const char *str)
- char *strim(char *s)
- size_t strlen(const char *s)
- size_t strnlen(const char *s, size_t count)
- char *strpbrk(const char *cs, const char *ct)
- char *strsep(char **s, const char *ct)
- bool sysfs_streq(const char *s1, const char *s2)
- void *memset(void *s, int c, size_t count)
- void *memcpy(void *dest, const void *src, size_t count)
- void *memmove(void *dest, const void *src, size_t count)
- int memcmp(const void *cs, const void *ct, size_t count)
- void *memscan(void *addr, int c, size_t size)
- char *strstr(const char *s1, const char *s2)
- char *strnstr(const char *s1, const char *s2, size_t len)
- void *memchr(const void *s, int c, size_t n)
用法说明:
int strnicmp(const char *s1, const char *s2, size_t len)
功能:比较字符串s1和s2的前len个字符串的大小,不区分字母大小写。
返回:返回的是字符串s1与s2能比较出大小的那个字符转换成小写后两者的差值。相等返回0。
int strcasecmp(const char *s1, const char *s2)
功能:比较字符串s1和s2的大小,同样不区分大小写。
返回:返回的是字符串s1与s2能比较出大小的那个字符转换成小写后两者的差值。相等返回0
注意:这儿字符串s1的长度应该大于s2的长度。
int strncasecmp(const char *s1, const char *s2, size_t n)
功能:比较字符串s1和s2的前n个字符串的大小,不区分字母大小写。
返回:返回的是字符串s1与s2能比较出大小的那个字符转换成小写后两者的差值。相等返回0 。
char *strcpy(char *dest, const char *src)
功能:把src所指的以NULL结束的字符串复制到dest所指的字符串中。
返回:返回指向dest的指针。
注意:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
char *strncpy(char *dest, const char *src, size_t count)
功能:将字符串src中最多count个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够count个字符才停止复制),返回指向dest的指针。
返回:返回指向dest的指针。
注意:
如果count > dest串长度,dest栈空间溢出产生崩溃异常。
否则:
1)src串长度<=dest串长度,(这里的串长度不包含串尾NULL字符)
如果count = [0, src串长度],src的前count个字符复制到dest中。但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况。
这种情况一般这样使用:
count = src串长度+1,连src的NULL字符一起复制。
count = dest串长度,[0,src串长度]处存放src字串,[src串长度, dest串长度]处存放NULL。
2)src串长度 > dest串长度
如果count = dest串长度,则dest串没有NULL字符,会导致输出会有乱码。如果不考虑src串复制完整性,可以将dest最后一字符置为NULL。
size_t strlcpy(char *dest, const char *src, size_t size)
功能:把src所指的由NULL结束的字符串最多size个字符复制到dest所指的字符串中。
返回:返回指向dest的指针。
注意:strlcpy比strncpy能更好的处理NULL事件,然而strlcpy不是ANSI C函数,一般在linux下使用
因此建议在linux驱动中使用strlcpy函数。
char *strcat(char *dest, const char *src)
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的’