当前位置:首页 > 学习英语 > 专业英语 > 计算机英语>正文

c语言string的用法

【计算机英语】 2016-03-20本文已影响
c语言string的用法有哪些呢,请看看下面小编为你整理总结的c语言string的用法。  函数原型:char *strdup(const char *s)  函数功能:字符串拷贝,目的空间由该函数分配  函数返回:指向拷贝后的字符串指针  参数说明:src-待拷贝的源字符串  所属文件:  [cpp] view plain  #include  #include  #include  intmain()  {  char*dup_str,*string="abcde";  dup_str=strdup(string);  printf("%s",dup_str);  free(dup_str);  return0;  }  @函数名称:strcpy  函数原型:char* strcpy(char* str1,char* str2);  函数功能:把str2指向的字符串拷贝到str1中去  函数返回:返回str1,即指向str1的指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstring[10];  char*str1="abcdefghi";  strcpy(string,str1);  printf("thestringis:%s\n",string);  return0;  }  @函数名称:strncpy  函数原型:char *strncpy(char *dest, const char *src,intcount)  函数功能:将字符串src中的count个字符拷贝到字符串dest中去  函数返回:指向dest的指针  参数说明:dest-目的字符串,src-源字符串,count-拷贝的字符个数  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*src="bbbbbbbbbbbbbbbbbbbb";//20'b's  chardest[50]="aaaaaaaaaaaaaaaaaaaa";//20'a's  puts(dest);  strncpy(dest,src,10);  puts(dest);  return0;  }  输出:  [cpp] view plain  /*******************************************  aaaaaaaaaaaaaaaaaaaa  bbbbbbbbbbaaaaaaaaaa  *******************************************/  注意:strncpy只复制指定长度的字符,不会自动在末尾加'\0'。若指定长度超过源字符串长度,不够的部分补‘\0’,  @函数名称:strcat  函数原型:char* strcat(char * str1,char * str2);  函数功能:把字符串str2接到str1后面,str1最后的'\0'被取消  函数返回:str1  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charbuffer[80];  strcpy(buffer,"Hello");  strcat(buffer,"world");  printf("%s\n",buffer);  return0;  }  @函数名称:strncat  函数原型:char *strncat(char *dest, const char *src, size_t maxlen)  函数功能:将字符串src中前maxlen个字符连接到dest中  函数返回:  参数说明:  所属文件:  [cpp] view plain  #include  #include  charbuffer[80];  intmain()  {  strcpy(buffer,"Hello");  strncat(buffer,"world",8);  printf("%s\n",buffer);  strncat(buffer,"*************",4);  printf("%s\n",buffer);  return0;  }  注意:与strncpy不同的是,strncat会自动在末尾加‘\0’,若指定长度超过源字符串长度,则只复制源字符串长度即停止  @函数名称:strcmp  函数原型:int strcmp(char * str1,char * str2);  函数功能:比较两个字符串str1,str2.  函数返回:str1str2,返回正数.  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*buf1="aaa",*buf2="bbb",*buf3="ccc";  intptr;  ptr=strcmp(buf2,buf1);  if(ptr>0)  printf("buffer2isgreaterthanbuffer1\n");  else  printf("buffer2islessthanbuffer1\n");  ptr=strcmp(buf2,buf3);  if(ptr>0)  printf("buffer2isgreaterthanbuffer3\n");  else  printf("buffer2islessthanbuffer3\n");  return0;  }  @函数名称:strncmp  函数原型:int strncmp(char *str1,char *str2,int count)  函数功能:对str1和str2中的前count个字符按字典顺序比较  函数返回:小于0:str1str2  参数说明:str1,str2-待比较的字符串,count-比较的长度  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstr1[]="aabbc";//  charstr2[]="abbcd";//  //为使测试程序更简练,此处假定了strncmp只返回-1,0,1三个数  charres_info[]={'<','=','>'};  intres;  //前1个字符比较  res=strncmp(str1,str2,1);  printf("1:str1%cstr2\n",res_info[res+1]);  //前3个字符比较  res=strncmp(str1,str2,3);  printf("3:str1%cstr2\n",res_info[res+1]);  }  输出:  [cpp] view plain  /****************************************  1:str1=str2  3:str1  [cpp] view plain  #include  #include  intmain()  {  char*p="Findallvowels";  p=strpbrk(p+1,"aeiouAEIOU");  while(p)  {  printf("%s\n",p);  p=strpbrk(p+1,"aeiouAEIOU");  }  return0;  }  输出:  [cpp] view plain  /**************************************  indallvowels  allvowels  owels  els  **************************************/  @函数名称:strcspn  函数原型:int strcspn(const char *s1, const char *s2)  函数功能:统计s1中从头开始直到第一个“来自s2中的字符”出现的长度  函数返回:长度  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  printf("%d\n",strcspn("abcbcadef","cba"));  printf("%d\n",strcspn("xxxbcadef","cba"));  printf("%d\n",strcspn("123456789","cba"));  return0;  }  输出:  [cpp] view plain  /************************  0  3  9  ************************/  @函数名称:strspn  函数原型:int strspn(const char *s1, const char *s2)  函数功能:统计s1中从头开始直到第一个“不来自s2中的字符”出现的长度  函数返回:位置指针  参数说明:  所属文件:  [html] view plain  #include  #include  #include  intmain()  {  printf("%d\n",strspn("abcbcadef","cba"));  printf("%d\n",strspn("xxxbcadef","cba"));  printf("%d\n",strspn("123456789","cba"));  return0;  }  输出:  [cpp] view plain  /************************  6  0  0  ************************/  @函数名称:strchr  函数原型:char* strchr(char* str,char ch);  函数功能:找出str指向的字符串中第一次出现字符ch的位置  函数返回:返回指向该位置的指针,如找不到,则返回空指针  参数说明:str-待搜索的字符串,ch-查找的字符  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*str="Thisisastring!";  charch;  char*p;  while(1)  {  printf("Pleaseinputachar:");  ch=getchar();  p=strchr(str,ch);  if(p)  printf("%cisthe%dcharacterof\"%s\"\n",ch,(int)(p-str+1),str);  else  printf("Notfound!\n");  printf("PressESCtoquit!\n\n");  if(27==getch())  break;  fflush(stdin);  }  return0;  }  运行结果:  [cpp] view plain  /********************************************  Pleaseinputachar:i  iisthe3characterof"Thisisastring!"  PressESCtoquit!  Pleaseinputachar:l  Notfound!  PressESCtoquit!  Pleaseinputachar:s  sisthe4characterof"Thisisastring!"  PressESCtoquit!  **********************************************/  @函数名称:strrchr  函数原型:char *strrchr(const char *s, int c)  函数功能:得到字符串s中最后一个含有c字符的位置指针  函数返回:位置指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstring[15];  char*ptr,c='r';  strcpy(string,"Thisisastring");  ptr=strrchr(string,c);  if(ptr)  printf("Thecharacter%cisatposition:%d",c,ptr-string);  else  printf("Thecharacterwasnotfound");  return0;  }  @函数名称:strstr  函数原型:char* strstr(char* str1,char* str2);  函数功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)  函数返回:返回该位置的指针,如找不到,返回空指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*str1="OpenWatcomC/C++",*str2="Watcom",*ptr;  ptr=strstr(str1,str2);  printf("Thesubstringis:%s\n",ptr);  return0;  }  输出:  The substringis:Watcom C/C++  @函数名称:strrev  函数原型:char *strrev(char *s)  函数功能:将字符串中的所有字符颠倒次序排列  函数返回:指向s的指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charforward[]="string";//原文中定义为char*是不对的,指向代码段的指针内容是不可变的  printf("Beforestrrev():%s",forward);  strrev(forward);  printf("Afterstrrev():%s",forward);  return0;  }  输出:  [cpp] view plain  /************************************  Beforestrrev():string  Afterstrrev():gnirts  ************************************/  @函数名称:strnset  函数原型:char *strnset(char *s, int ch, size_t n)  函数功能:将字符串s中前n个字符设置为ch的值  函数返回:指向s的指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstring[]="aaaaaaaaaaaaaaaaaaaaaaa";  charletter='x';  printf("stringbeforestrnset:%s\n",string);  strnset(string,letter,10);  printf("stringafterstrnset:%s\n",string);  return0;  }  输出:  [cpp] view plain  /*************************************************  stringbeforestrnset:aaaaaaaaaaaaaaaaaaaaaaa  stringafterstrnset:xxxxxxxxxxaaaaaaaaaaaaa  *************************************************/  @函数名称:strset  函数原型:char *strset(char *s, int ch)  函数功能:将字符串s中所有字符设置为ch的值  函数返回:指向s的指针  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstring[10]="123456789";  charsymbol='c';  printf("Beforestrset():%s",string);  strset(string,symbol);  printf("Afterstrset():%s",string);  return0;  }  @函数名称:strtok  函数原型:char *strtok(char *s1, const char *s2)  函数功能:分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词)  函数返回:字符串s1中首次出现s2中的字符前的子字符串指针  参数说明:s2一般设置为s1中的分隔字符  规定进行子调用时(即分割s1的第二、三及后续子串)第一参数必须是NULL  在每一次匹配成功后,将s1中分割出的子串位置替换为NULL(摘下链中第一个环),因此s1被破坏了  函数会记忆指针位置以供下一次调用  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*p;  char*buffer;  char*delims={".,"};  buffer=strdup("Findwords,allofthem.");  printf("%s\n",buffer);  p=strtok(buffer,delims);  while(p!=NULL){  printf("word:%s\n",p);  p=strtok(NULL,delims);  }  printf("%s\n",buffer);  return0;  }//根据测试,可以随时给strtok的第一个参数输入一个新的字符串,开始新字符串的分隔  PS:根据测试,可以随时给strtok的第一个参数输入一个新的字符串,开始新字符串的分隔  @函数名称:strupr  函数原型:char *strupr(char *s)  函数功能:将字符串s中的字符变为大写  函数返回:  参数说明:  所属文件:  [cpp] view plain  #include  #include  intmain()  {  charstring[]="abcdefghijklmnopqrstuvwxyz",*ptr;//会影响原字符串的内存,用char[]来声明  ptr=strupr(string);  printf("%s",ptr);  return0;  }  @函数名称:strlwr  函数原型:char *strlwr(char *s)  函数功能:将字符串中的字符变为小写字符  函数返回:指向s的指针  参数说明:  所属文件:  [cpp] view plain  #include  intmain()  {  charstr[]="HOWTOSAY";  printf("%s",strlwr(str));  return0;  }  @函数名称:strerror  函数原型:char *strerror(int errnum)  函数功能:得到错误信息的内容信息  函数返回:错误提示信息字符串指针  参数说明:errnum-错误编号  所属文件:  [cpp] view plain  #include  #include  intmain()  {  char*buffer;  buffer=strerror(errno);  printf("Error:%s",buffer);  return0;  }  @函数名称:memcpy  函数原型:void *memcpy(void *dest, const void *src, size_t n)  函数功能:字符串拷贝  函数返回:指向dest的指针  参数说明:src-源字符串,n-拷贝的最大长度  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  charsrc[]="******************************";  chardest[]="abcdefghijlkmnopqrstuvwxyz0123456709";  char*ptr;  printf("destinationbeforememcpy:%s\n",dest);  ptr=memcpy(dest,src,strlen(src));  if(ptr)  printf("destinationaftermemcpy:%s\n",dest);  else  printf("memcpyfailed");  return0;  }  输出:  [cpp] view plain  /*************************************************************  destinationbeforememcpy:abcdefghijlkmnopqrstuvwxyz0123456709  destinationaftermemcpy:******************************456709  **************************************************************/  @函数名称:memccpy  函数原型:void *memccpy(void *dest, const void *src, int c, size_t n)  函数功能:字符串拷贝,到指定长度或遇到指定字符时停止拷贝  函数返回:  参数说明:src-源字符串指针,c-中止拷贝检查字符,n-长度,dest-拷贝底目的字符串指针  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  char*src="Thisisthesourcestring";  chardest[50];  char*ptr;  ptr=memccpy(dest,src,'c',strlen(src));  if(ptr)  {  *ptr='\0';  printf("Thecharacterwasfound:%s",dest);  }  else  printf("Thecharacterwasn'tfound");  return0;  }  输出:  [cpp] view plain  /*****************************************  Thecharacterwasfound:Thisisthesourc  *****************************************/  PS:指定字符被复制到dest中,memccpy返回了dest中指定字符的下一处的地址,返回NULL表示未遇到指定字符  @函数名称:memchr  函数原型:void *memchr(const void *s, int c, size_t n)  函数功能:在字符串中第开始n个字符中寻找某个字符c的位置  函数返回:返回c的位置指针,返回NULL时表示未找到  参数说明:s-要搜索的字符串,c-要寻找的字符,n-指定长度  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  charstr[17];  char*ptr;  strcpy(str,"Thisisastring");  ptr=memchr(str,'r',strlen(str));  if(ptr)  printf("Thecharacter'r'isatposition:%d",ptr-str);  else  printf("Thecharacterwasnotfound");  return0;  }  @函数名称:memcmp  函数原型:int memcmp(const void *s1, const void *s2,size_t n)  函数功能:按字典顺序比较两个串s1和s2的前n个字节  函数返回:<0,=0,>0分别表示s1<,=,>s2  参数说明:s1,s2-要比较的字符串,n-比较的长度  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  char*buf1="ABCDE123";  char*buf2="abcde456";  intstat;  stat=memcmp(buf1,buf2,5);  printf("Thestringstoposition5are");  if(stat)printf("not");  printf("thesame\n");  return0;  }  @函数名称:memicmp  函数原型:int memicmp(const void *s1, const void *s2, size_t n)  函数功能:按字典顺序、不考虑字母大小写对字符串s1,s2前n个字符比较  函数返回:<0,=0,>0分别表示s1<,=,>s2  参数说明:s1,s2-要比较的字符串,n-比较的长度  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  char*buf1="ABCDE123";  char*buf2="abcde456";  intstat;  stat=memicmp(buf1,buf2,5);  printf("Thestringstoposition5are");  if(stat)printf("not");  printf("thesame");  return0;  }  输出:  [cpp] view plain  /**************************************  Thestringstoposition5arethesame  ***************************************/  @函数名称:memmove  函数原型:void *memmove(void *dest, const void *src, size_t n)  函数功能:字符串拷贝  函数返回:指向dest的指针  参数说明:src-源字符串,n-拷贝的最大长度  所属文件:,  [cpp] view plain  #include  #include  intmain()  {  chardest[40]="abcdefghijklmnopqrstuvwxyz0123456789";  printf("destinationpriortomemmove:%s\n",dest);  memmove(dest+1,dest,35);  printf("destinationaftermemmove:%s",dest);  return0;  }  PS:与memcpy不同的是,memmove可以处理目的字符串与源字符串地址空间出现重叠的情况,可保证待复制的内容不被破坏。  @函数名称: memset  函数原型: void *memset(void *s, int c, size_t n)  函数功能: 字符串中的n个字节内容设置为c  函数返回:  参数说明: s-要设置的字符串,c-设置的内容,n-长度  所属文件: ,  [cpp] view plain  #include  #include  #include  intmain()  {  charbuffer[]="Helloworld";  printf("Bufferbeforememset:%s/n",buffer);  memset(buffer,'*',strlen(buffer)-1);  printf("Bufferaftermemset:%s",buffer);  return0;  }
网友评论

Copyright © 2019 All Rights Reserved

错不了学习网 版权所有

回到顶部