字符串相关操作函数汇总
2012-10-13 15:27
225 查看
1、 字符串的初始化函数
void *memset(void *s, int c, size_t n);
返回值:s指向哪,返回的指针就指向哪
2、取字符串的长度
size_t strlen(const char *s);
返回值:字符串的长度
说明:返回的长度不包括
3、拷贝字符串
char *strcpy(char *dest,const char *src);
char *strcpy(char *dest,const char *src,size_t n);
void *memcpy(void *dest, const void *src, size_t n);
说明:
void *memmove(void *dest, const void *src, size_t n);
说明:
4、连接字符串
char *strcat(char *dest, const char *src);
说明:调用者必须确保
char *strncat(char *dest, const char *src, size_t n);
返回值:dest指向哪,返回的指针就指向哪
说明:参数
5、比较字符串
int memcmp(const void *s1, const void *s2, size_t n);
说明:
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
6、搜索字符串
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
返回值:如果找到字符c,返回字符串s中指向字符c的指针,如果找不到就返回NULL
char *strstr(const char *haystack, const char *needle);
返回值:如果找到子串,返回值指向子串的开头,如果找不到就返回NULL
说明:
7、分割字符串
char *strtok(char *str, const char *delim);
char *strtok_r(char *str, const char *delim, char **saveptr);
返回值:返回指向下一个Token的指针,如果没有下一个Token了就返回NULL
说明:
char * strsep(char **s1, const char *delimt);
说明: 被分割字串要被改变,所以不能操作存放在静态存储区的字串常量,分割符要被替换成’\0’,需要传二级指针,因为s1是指向分割字串,第一次指向源字串,调用后指向分割后的下一个token。所以s1会改变,需要传递二级指针。
其他相关函数见http://see.xidian.edu.cn/cpp/u/hs2/
函数名: stpcpy
功 能: 拷贝一个字符串到另一个
用 法: char *stpcpy(char *destin, char *source);
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char *source);
函数名: strchr
功 能: 在一个串中查找给定字符的第一个匹配之处\
用 法: char *strchr(char *str, char c);
函数名: strcmp
功 能: 串比较
用 法: int strcmp(char *str1, char *str2);
根据ASCII码比较,str1>str2,返回值 > 0;两串相等,返回0
函数名: strncmpi
功 能: 将一个串中的一部分与另一个串比较, 不管大小写
用 法: int strncmpi(char *str1, char *str2, unsigned maxlen);
函数名: strcpy
功 能: 串拷贝
用 法: char *strcpy(char *str1, char *str2);
函数名: strcspn
功 能: 在串中查找第一个给定字符集内容的段
用 法: int strcspn(char *str1, char *str2);
函数名: strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
函数名: stricmp
功 能: 以大小写不敏感方式比较两个串
用 法: int stricmp(char *str1, char *str2);
函数名: strerror
功 能: 返回指向错误信息字符串的指针
用 法: char *strerror(int errnum);
函数名: strcmpi
功 能: 将一个串与另一个比较, 不管大小写
用 法: int strcmpi(char *str1, char *str2);
函数名: strncmp
功 能: 串比较
用 法: int strncmp(char *str1, char *str2, int maxlen);
函数名: strcmpi
功 能: 把串中的一部分与另一串中的一部分比较, 不管大小写
用 法: int strcmpi(char *str1, char *str2);
函数名: strncpy
功 能: 串拷贝
用 法: char *strncpy(char *destin, char *source, int maxlen);
函数名: strnicmp
功 能: 不注重大小写地比较两个串
用 法: int strnicmp(char *str1, char *str2, unsigned maxlen);
程序例:
函数名: strnset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strnset(char *str, char ch, unsigned n);
函数名: strpbrk
功 能: 在串中查找给定字符集中的字符
用 法: char *strpbrk(char *str1, char *str2);
函数名: strrchr
功 能: 在串中查找指定字符的最后一个出现
用 法: char *strrchr(char *str, char c);
函数名: strrev
功 能: 串倒转
用 法: char *strrev(char *str);
函数名: strset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strset(char *str, char c);
函数名: strspn
功 能: 在串中查找指定字符集的子集的第一次出现
用 法: int strspn(char *str1, char *str2);
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
函数名: strtod
功 能: 将字符串转换为double型值
用 法: double strtod(char *str, char **endptr);
函数名: strtok
功 能: 查找由在第二个串中指定的分界符分隔开的单词
用 法: char *strtok(char *str1, char *str2);
函数名: strtol
功 能: 将串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);
函数名: strupr
功 能: 将串中的小写字母转换为大写字母
用 法: char *strupr(char *str);
函数名: swab
功 能: 交换字节
用 法: void swab (char *from, char *to, int nbytes);
http://www.yuanma.org/data/2006/1029/article_1738.htm
void *memset(void *s, int c, size_t n);
返回值:s指向哪,返回的指针就指向哪
说明:memset函数把
s所指的内存地址开始的
n个字节都填充为
c的值。通常
c的值为0,把一块内存区清零。例如定义
char buf[10];,如果它是全局变量或静态变量,则自动初始化为0(位于
.bss段),如果它是函数的局部变量,则初值不确定,可以用
memset(buf, 0, 10)清零,由
malloc分配的内存初值也是不确定的,也可以用
memset清零。
2、取字符串的长度
size_t strlen(const char *s);
返回值:字符串的长度
说明:返回的长度不包括
'\0'字符在内
3、拷贝字符串
char *strcpy(char *dest,const char *src);
说明:strcpy在拷贝字符串时会把结尾的
'\0'也拷到
dest中,因此保证了
dest中是以
'\0'结尾的字符串。
strcpy只知道
src字符串的首地址,不知道长度,它会一直拷贝到
'\0'为止,所以
dest所指向的内存空间要足够大,否则有可能写越界。如果没有保证
src所指向的内存空间以
'\0'结尾,也有可能读越界。
src和
dest所指向的内存空间不能有重叠。
char *strcpy(char *dest,const char *src,size_t n);
说明:strncpy的参数
n指定最多从
src中拷贝
n个字节到
dest中,换句话说,如果拷贝到
'\0'就结束,如果拷贝到
n个字节还没有碰到
'\0',那么也结束,调用者负责提供适当的
n值,以确保读写不会越界,比如让
n的值等于
dest所指向的内存空间的大小。这意味着
dest有可能不是以
'\0'结尾的。如果
src字符串全部拷完了不足
n个字节,那么还差多少个字节就补多少个
'\0'。
void *memcpy(void *dest, const void *src, size_t n);
说明:
memcpy函数从
src所指的内存地址拷贝
n个字节到
dest所指的内存地址,和
strncpy不同,
memcpy并不是遇到
'\0'就结束,而是一定会拷贝完
n个字节。
void *memmove(void *dest, const void *src, size_t n);
说明:
memmove也是从
src所指的内存地址拷贝
n个字节到
dest所指的内存地址,虽然叫move但其实也是拷贝而非移动。但是和
memcpy有一点不同,
memcpy的两个参数
src和
dest所指的内存区间如果重叠则无法保证正确拷贝,而
memmove却可以正确拷贝。
4、连接字符串
char *strcat(char *dest, const char *src);
说明:调用者必须确保
dest缓冲区足够大,否则会导致缓冲区溢出错误。
strncat函数通过参数
n指定一个长度,就可以避免缓冲区溢出错误。
char *strncat(char *dest, const char *src, size_t n);
返回值:dest指向哪,返回的指针就指向哪
说明:参数
n的含义和
strncpy的参数
n不同,它并不是缓冲区
dest的长度,而是表示最多从
src缓冲区中取
n个字符(不包括结尾的
'\0')连接到
dest后面。如果
src中前
n个字符没有出现
'\0',则取前
n个字符再加一个
'\0'连接到
dest后面,所以
strncat总是保证
dest缓冲区以
'\0'结尾。
5、比较字符串
int memcmp(const void *s1, const void *s2, size_t n);
说明:
memcmp从前到后逐个比较缓冲区
s1和
s2的前
n个字节(不管里面有没有
'\0'),如果
s1和
s2的前
n个字节全都一样就返回0,如果遇到不一样的字节,
s1的字节比
s2小就返回负值,
s1的字节比
s2大就返回正值。
int strcmp(const char *s1, const char *s2);
strcmp把
s1和
s2当字符串比较,在其中一个字符串中遇到
'\0'时结束,按照上面的比较准则,
"ABC"比
"abc"小,
"ABCD"比
"ABC"大,
"123A9"比
"123B2"小。
int strncmp(const char *s1, const char *s2, size_t n);
strncmp的比较结束条件是:要么在其中一个字符串中遇到
'\0'结束(类似于
strcmp),要么比较完
n个字符结束(类似于
memcmp)。
6、搜索字符串
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
返回值:如果找到字符c,返回字符串s中指向字符c的指针,如果找不到就返回NULL
说明:strchr在字符串
s中从前到后查找字符
c,找到字符
c第一次出现的位置时就返回,返回值指向这个位置,如果找不到字符
c就返回
NULL。
strrchr和
strchr类似,但是从右向左找字符
c,找到字符
c第一次出现的位置就返回。
char *strstr(const char *haystack, const char *needle);
返回值:如果找到子串,返回值指向子串的开头,如果找不到就返回NULL
说明:
strstr在一个长字符串中从前到后找一个子串(Substring),找到子串第一次出现的位置就返回,返回值指向子串的开头,如果找不到就返回NULL。
7、分割字符串
char *strtok(char *str, const char *delim);
char *strtok_r(char *str, const char *delim, char **saveptr);
返回值:返回指向下一个Token的指针,如果没有下一个Token了就返回NULL
说明:
delim是分隔符,可以指定一个或多个分隔符,
strtok遇到其中任何一个分隔符就会分割字符串。第一次调用要把字符串首地址传给
strtok的第一个参数,以后每次调用第一个参数只要传
NULL就可以了,
strtok函数自己会记住上次处理到字符串的什么位置(显然这是通过
strtok函数中的一个静态指针变量记住的)。
strtok_r函数则不存在这个问题,它的内部没有静态变量,调用者需要自己分配一个指针变量来维护字符串中的当前处理位置,每次调用时把这个指针变量的地址传给
strtok_r的第三个参数,告诉
strtok_r从哪里开始处理,
strtok_r返回时再把新的处理位置写回到这个指针变量中(这是一个Value-result参数)。
strtok_r末尾的r就表示可重入(Reentrant)。
char * strsep(char **s1, const char *delimt);
说明: 被分割字串要被改变,所以不能操作存放在静态存储区的字串常量,分割符要被替换成’\0’,需要传二级指针,因为s1是指向分割字串,第一次指向源字串,调用后指向分割后的下一个token。所以s1会改变,需要传递二级指针。
其他相关函数见http://see.xidian.edu.cn/cpp/u/hs2/
函数名: stpcpy
功 能: 拷贝一个字符串到另一个
用 法: char *stpcpy(char *destin, char *source);
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char *source);
函数名: strchr
功 能: 在一个串中查找给定字符的第一个匹配之处\
用 法: char *strchr(char *str, char c);
函数名: strcmp
功 能: 串比较
用 法: int strcmp(char *str1, char *str2);
根据ASCII码比较,str1>str2,返回值 > 0;两串相等,返回0
函数名: strncmpi
功 能: 将一个串中的一部分与另一个串比较, 不管大小写
用 法: int strncmpi(char *str1, char *str2, unsigned maxlen);
函数名: strcpy
功 能: 串拷贝
用 法: char *strcpy(char *str1, char *str2);
函数名: strcspn
功 能: 在串中查找第一个给定字符集内容的段
用 法: int strcspn(char *str1, char *str2);
函数名: strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
函数名: stricmp
功 能: 以大小写不敏感方式比较两个串
用 法: int stricmp(char *str1, char *str2);
函数名: strerror
功 能: 返回指向错误信息字符串的指针
用 法: char *strerror(int errnum);
函数名: strcmpi
功 能: 将一个串与另一个比较, 不管大小写
用 法: int strcmpi(char *str1, char *str2);
函数名: strncmp
功 能: 串比较
用 法: int strncmp(char *str1, char *str2, int maxlen);
函数名: strcmpi
功 能: 把串中的一部分与另一串中的一部分比较, 不管大小写
用 法: int strcmpi(char *str1, char *str2);
函数名: strncpy
功 能: 串拷贝
用 法: char *strncpy(char *destin, char *source, int maxlen);
函数名: strnicmp
功 能: 不注重大小写地比较两个串
用 法: int strnicmp(char *str1, char *str2, unsigned maxlen);
程序例:
函数名: strnset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strnset(char *str, char ch, unsigned n);
函数名: strpbrk
功 能: 在串中查找给定字符集中的字符
用 法: char *strpbrk(char *str1, char *str2);
函数名: strrchr
功 能: 在串中查找指定字符的最后一个出现
用 法: char *strrchr(char *str, char c);
函数名: strrev
功 能: 串倒转
用 法: char *strrev(char *str);
函数名: strset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strset(char *str, char c);
函数名: strspn
功 能: 在串中查找指定字符集的子集的第一次出现
用 法: int strspn(char *str1, char *str2);
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
函数名: strtod
功 能: 将字符串转换为double型值
用 法: double strtod(char *str, char **endptr);
函数名: strtok
功 能: 查找由在第二个串中指定的分界符分隔开的单词
用 法: char *strtok(char *str1, char *str2);
函数名: strtol
功 能: 将串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);
函数名: strupr
功 能: 将串中的小写字母转换为大写字母
用 法: char *strupr(char *str);
函数名: swab
功 能: 交换字节
用 法: void swab (char *from, char *to, int nbytes);
http://www.yuanma.org/data/2006/1029/article_1738.htm
相关文章推荐
- 字符串相关操作函数汇总
- JavaScript中常见的字符串操作函数及用法汇总
- linux字符串相关操作汇总
- js字符串相关操作和函数大全
- linux下文件的读写操作、字符串的处理操作,多线程操作等相关函数使用说明
- 字符串以及内存操作相关函数
- (C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数
- JavaScript中常见的字符串操作函数及用法汇总
- LINUX C 字符串操作函数接口 汇总
- python字符串、字符串处理函数及字符串相关操作
- C语言中字符串的内存地址操作的相关函数简介
- 字符串以及内存操作相关函数
- 字符串日期比较和时间差 and java时间操作函数汇总
- VBS的字符串及日期操作相关函数
- 字符串以及内存操作相关函数
- php字符串操作相关的函数
- 字符串以及内存操作相关函数
- python中常用检测字符串相关函数汇总
- 字符串操作及相关函数(万一的博客,51篇)
- 字符串操作及相关函数