C- 字符串处理函数

来源:互联网 发布:淘宝上门安装服务商 编辑:程序博客网 时间:2024/05/15 01:36
 

 
#include <string.h>

 

1. 字符串长度
extern int strlen(char *s); //返回s的长度,不包含停止符NULL

2. 字符串比拟
extern int strcmp(char *s1,char * s2);
extern int strncmp(char *s1,char * s2,int n);// 比较字符串s1和s2的前n个字符。
extern int stricmp(char *s1,char * s2);//对比字符串s1和s2,不分辨大小写。
extern int strnicmp(char *s1,char * s2,int n);//比拟字符串s1和s2的前n个字符,不分辨大小写。
extern int bcmp(const void *s1, const void *s2, int n);//对比字符串s1和s2的前n个字节能否相称,不检查串中空字节NULL

假如s1=s2或者n=0则返回零,不然返回非零值。

当s1<s2时,返回值<0;该s1=s2时,返回值=0;该s1>s2时,返回值>0

 

3. 内存字节比较
extern int memcmp(void *buf1, void *buf2,unsigned int count);
extern int memicmp(void *buf1, void *buf2, unsigned int count);//比较时不分辨大小写。

比拟内存地区buf1和buf2的前count个字节。
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0

 

 

4.附带
extern char *strcat(char *dest,char *src);//把src所指字符串加加到dest尾处(代替dest末端处的'/0')并补上'/0'。
extern char *strncat(char *dest,char *src,int n);//把src所指字符串的前n个字符加加到dest末端处(代替dest解尾处的'/0')并补上'/0'。

src和dest所指内存区域不能够重叠且dest必需有充足的空间来包容src的字符串。返回指向dest的指针。

 

5.复制
extern char *strcpy(char *dest,char *src);//把src所指由NULL结束的字符串复制到dest所指的数组中。
extern char *stpcpy(char *dest,char *src);//同上
extern char *strncpy(char *dest, char *src, int n);//把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
extern void bcopy(const void *src, void *dest, int n);//将字符串src的前n个字节复制到dest中,bcopy不检查字符串中的空字节NULL,函数没有返回值。
extern char *strdup(char *s);复制字符串s,返回指向被复制的字符串的指针,他由malloc()分派且利用后可以由free()释放。

src和dest所指内存地区不能够冲突且dest必需有充足的空间来包容src的字符串。返回指向dest的指针。

 

 

6.内存字节复制
extern void *memcpy(void *dest, void *src, unsigned int count);//由src所指内存区域复制count个字节到dest所指内存区域。src和dest所指内存区域不能重叠,函数返回指向dest的指针。
extern void *memmove(void *dest, const void *src, unsigned int count);//同上,但src和dest所指内存区域可以重叠,而复制后src内容会被变动。函数返回指向dest的指针。
extern void movmem(void *src, void *dest, unsigned int count);//由src所指内存区域复造count个字节到dest所指内存地区。src和dest所指内存区域能够重叠,但复造后src内容会被变动。函数前往指背dest的指针。
extern void *memccpy(void *dest, void *src, unsigned char c, unsigned int count);//由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符c则停止复制。 返回值:如果c没有被复制,则返回NULL,否则,返回一个指向紧接着dest区域后的字符的指针。

 

 

7.查找
extern char *strchr(char *s,char c);//查找字符串s中首次出现字符c的位置 。返回首次出现c的位置的指针,如果s中不存在c则返回NULL。

extern int strcspn(char *s1,char *s2);//顺序在字符串s1中搜寻与s2中字符的第一个相同字符,返回这个字符在S1中第一次出现的位置。返回第一个出现的字符在s1中的下标值,亦即在s1中出现而s2中没有出现的子串的长度。)

 extern char *strpbrk(char *s1, char *s2);//在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内。返回指向s1中第一个相匹配的字符的指针,如果没有匹配字符则返回空指针NULL。

extern char *strstr(char *haystack, char *needle);//从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

 

 

8.内存字节查找

extern void *memchr(void *buf, char ch, unsigned count);//自buf所指内存区域的前count个字节查觅字符ch。假如成功,返回指向字符ch的指针;不然返回NULL。

 

9.转换
extern char *strlwr(char *s);//将字符串s转换为小写。
extern char *strupr(char *s);//将字符串s转换为大写。

 

10.沉置
extern char *strset(char *s, char c);//把字符串s中的所有字符都设置成字符c,返回指向s的指针。调用strset()函数之前要为其赋值,例如char c[4]=“”。

extern void bzero(void *s, int n);//置字节字符串s的前n个字节为零且包括‘\0’。没有返回值。

extern void setmem(void *buf, unsigned int count, char ch);//把buf所指内存区域前count个字节设置成字符ch。返回指向buf的指针。

extern void *memset(void *buffer, int c, int count);//在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

 

 

11.倒序
extern char *strrev(char *s);//把字符串s的一切字符的次第倒置过去(不包含空字符NULL)。返回指向倒置次序后的字符串指针。

 

12.分解字符串
extern char *strtok(char *s, char *delim);//分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

ep: char input[16] = "abc,d";

  char *p;

  /**/ /* strtok places a NULL terminator

  in front of the token, if found */

  p = strtok(input, ",");

  if (p) printf("%s\n", p);

  /**/ /* A second call to strtok using a NULL

  as the first parameter returns a pointer

  to the character following the token */

  p = strtok(NULL, ",");

  if (p) printf("%s\n", p);

 

 

       char sentence[]="This is a sentence with 7 tokens";

  cout<<"The string to be tokenized is:\n"<<sentence<<"\n\nThe tokens are:\n\n";

  char *tokenPtr=strtok(sentence," ");

  while(tokenPtr!=NULL)

  {

  cout<<tokenPtr<<'\n';

  tokenPtr=strtok(NULL," ");

  }

 

原创粉丝点击