Linux內核不能使用用戶空間的函數,不過內核裡還是有很多同名字符串處理函數可用,基本沒有障礙。
#include <linux/string.h>即可
當然,有的函數還是體系結構優化的,例如有的powerpc處理器含有正則表達式硬件加速器。對於優化處理的函數,必須定義相應的__ HAVE_ARCH_OPERATION宏
否則,都是用lib/string.c 中實現的體系結構無關的標准操作。
strcmp、strncmp,這個不用解釋
strnicmp,同strncmp,不檢查大小寫
strcpy、strncpy這些也不用解釋,
strlcpy,類似於strncpy,但是如果源字符串大於size,那麼能保證目標字符串仍然是0結尾字符串。
char * strcat(char *, const char *);
將src字符串附加到dest字符串,strncat同理。
size_t strlcat(char *, const char *, __kernel_size_t);
同strncat類似,但結果字符串長度不超過size。
char * strchr(const char * s ,int c);
在字符串s中查找c出現的第一個位置
char * strrchr(const char *,int);
同上,不過是查找出現的最後的位置
extern __kernel_size_t strlen(const char *);
統計一個0結尾字符串長度
extern __kernel_size_t strnlen(const char *,__kernel_size_t);
同上,但是統計長度不超過size
__kernel_size_t strspn(const char * s,const char * accept);
在s中統計完全由accept中字符組成的字符串長度
__kernel_size_t strcspn(const char *,const char *reject);
類似strspn,但統計的是完全不由reject中字符組成的字符串長度
char * strstr(const char * s1, const char * s2);
在s1中查找字串s2
char * strpbrk(const char * cs,const char *ct);
查找字符串ct中的字符在字符串cs中出現的第一個位置
char * strsep(char **,const char *);
將字符串劃分成由ct分割的標記。
還有一些操作適合於普通的內存區,而非字符串
memset不多說,memset_io可用於IO區
char *bcopy(char *dest, const char *src, size_t count)
void *memcpy(void *dest, const void *src, size_t count)
這兩個功能相同,不過指針類型memcpy是void而已
memcpy_fromio同上,不過可以從io區拷貝
void *memmove(void *dest, const void *src, size_t count)
同memcpy,不過可以用於重疊的源和目標區域