字符串函数

来源:互联网 发布:htc g11软件下载 编辑:程序博客网 时间:2024/05/13 11:00

c 

strcpy 

  原型:extern char *strcpy(char *dest,char *src); 

  用法:#include <string.h> 

  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 

  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 

  返回指向dest结尾处字符(NULL)的指针 

  举例: 

  // strcpy.c 

  #include <syslib.h> 

  #include <string.h> 

  main() 

  { 

  char *s="Golden Global View"; 

  char d[20]; 

  clrscr(); 

  strcpy(d,s); 

  printf("%s",d); 

  getchar(); 

  return 0; 

  } 

strcat 

  原型:extern char *strcat(char *dest,char *src); 

  用法:#include <string.h> 

  功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。 

  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 

  返回指向dest的指针 

  举例: 

  // strcat.c 

  #include <syslib.h> 

  #include <string.h> 

  main() 

  { 

  char d[20]="Golden Global"; 

  char *s=" View"; 

  clrscr(); 

  strcat(d,s); 

  printf("%s",d); 

  getchar(); 

  return 0; 

  } 

strlen 

  原型:extern int strlen(char *s); 

  用法:#include <string.h> 

  功能:计算字符串s的长度 

  说明:返回s的长度,不包括结束符NULL。 

  举例: 

  // strlen.c 

  #include <syslib.h> 

  #include <string.h> 

  main() 

  { 

  char *s="Golden Global View"; 

  clrscr(); 

  printf("%s has %d chars",s,strlen(s)); 

  getchar(); 

  return 0; 

  } 

strncat 

  原型:extern char *strncat(char *dest,char *src,int n); 

  用法:#include <string.h> 

  功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。 

  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 

  返回指向dest的指针。 

  举例: 

  // strncat.c 

  #include <syslib.h> 

  #include <string.h> 

  main() 

  { 

  char d[20]="Golden Global"; 

  char *s=" View WinIDE Library"; 

  clrscr(); 

  strncat(d,s,5); 

  printf("%s",d); 

  getchar(); 

  return 0; 

  } 

strncpy 

  原型:extern char *strncpy(char *dest, char *src, int n); 

  用法:#include <string.h> 

  功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。 

  说明: 

  如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。 

  如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。 

  src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 

  返回指向dest的指针。 

  举例: 

  // strncpy.c 

  #include <syslib.h> 

  #include <string.h> 

  main() 

  { 

  char *s="Golden Global View"; 

  char *d="Hello, GGV Programmers"; 

  char *p=strdup(s); 

  clrscr(); 

  textmode(0x00); // enable 6 lines mode 

  strncpy(d,s,strlen(s)); 

  printf("%s\n",d); 

  strncpy(p,s,strlen(d)); 

  printf("%s",p); 

  free(p); 

  getchar(); 

  return 0; 

  } 

strcspn 

  功 能: 在串中查找第一个给定字符集内容的段 

  用 法: int strcspn(char *str1, char *str2); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  #include <alloc.h> 

  int main(void) 

  { 

  char *string1 = "1234567890"; 

  char *string2 = "747DC8"; 

  int length; 

  length = strcspn(string1, string2); 

  printf("Character where strings intersect is at position %dn", length); 

  return 0; 

  } 

strdup 

  功 能: 将串拷贝到新建的位置处 

  用 法: char *strdup(char *str); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  #include <alloc.h> 

  int main(void) 

  { 

  char *dup_str, *string = "abcde"; 

  dup_str = strdup(string); 

  printf("%sn", dup_str); 

  free(dup_str); 

  return 0; 

  } 

stricmp 

  功 能: 以大小写不敏感方式比较两个串 

  用 法: int stricmp(char *str1, char *str2); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *buf1 = "BBB", *buf2 = "bbb"; 

  int ptr; 

  ptr = stricmp(buf2, buf1); 

  if (ptr > 0) 

  printf("buffer 2 is greater than buffer 1n"); 

  if (ptr < 0) 

  printf("buffer 2 is less than buffer 1n"); 

  if (ptr == 0) 

  printf("buffer 2 equals buffer 1n"); 

  return 0; 

  } 

strerror 

  功 能: 返回指向错误信息字符串的指针 

  用 法: char *strerror(int errnum); 

  程序例: 

  #include <stdio.h> 

  #include <errno.h> 

  int main(void) 

  { 

  char *buffer; 

  buffer = strerror(errno); 

  printf("Error: %sn", buffer); 

  return 0; 

  } 

strcmp 

  功 能: 将一个串与另一个比较 

  用 法: int strcmpi(char *str1, char *str2); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *buf1 = "BBB", *buf2 = "bbb"; 

  int ptr; 

  ptr = strcmpi(buf2, buf1); 

  if (ptr > 0) 

  printf("buffer 2 is greater than buffer 1n"); 

  if (ptr < 0) 

  printf("buffer 2 is less than buffer 1n"); 

  if (ptr == 0) 

  printf("buffer 2 equals buffer 1n"); 

  return 0; 

  } 

strncmp 

  功 能: 把串中的一部分与另一串中的一部分比较 (前n个字符) 

  用 法: int strncmp(char *str1, char *str2,int maxlen); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *buf1 = "BBBccc", *buf2 = "bbbccc"; 

  int ptr; 

  ptr = strncmp(buf2,buf1,3); 

  if (ptr > 0) 

  printf("buffer 2 is greater than buffer 1n"); 

  if (ptr < 0) 

  printf("buffer 2 is less than buffer 1n"); 

  if (ptr == 0) 

  printf("buffer 2 equals buffer 1n"); 

  return 0; 

  } 

strnicmp 

  功 能: 不注重大小写地比较两个串的前n个字符 

  用 法: int strnicmp(char *str1, char *str2, unsigned maxlen); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *buf1 = "BBBccc", *buf2 = "bbbccc"; 

  int ptr; 

  ptr = strnicmp(buf2, buf1, 3); 

  if (ptr > 0) 

  printf("buffer 2 is greater than buffer 1n"); 

  if (ptr < 0) 

  printf("buffer 2 is less than buffer 1n"); 

  if (ptr == 0) 

  printf("buffer 2 equals buffer 1n"); 

  return 0; 

  } 

strnset 

  功 能: 将一个串中的所有字符都设为指定字符 

  用 法: char *strnset(char *str, char ch, unsigned n); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  int main(void) 

  { 

  char *string = "abcdefghijklmnopqrstuvwxyz"; 

  char letter = 'x'; 

  printf("string before strnset: %sn", string); 

  strnset(string, letter, 13); 

  printf("string after strnset: %sn", string); 

  return 0; 

  } 

strpbrk 

  功 能: 在串中查找给定字符集中的字符 

  用 法: char *strpbrk(char *str1, char *str2); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  int main(void) 

  { 

  char *string1 = "abcdefghijklmnopqrstuvwxyz"; 

  char *string2 = "onm"; 

  char *ptr; 

  ptr = strpbrk(string1, string2); 

  if (ptr) 

  printf("strpbrk found first character: %cn", *ptr); 

  else 

  printf("strpbrk didn't find character in setn"); 

  return 0; 

  } 

strrchr 

  功 能: 在串中查找指定字符的最后一个出现 

  用 法: char *strrchr(char *str, char c); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char string[15]; 

  char *ptr, c = 'r'; 

  strcpy(string, "This is a string"); 

  ptr = strrchr(string, c); 

  if (ptr) 

  printf("The character %c is at position: %dn", c, ptr-string); 

  else 

  printf("The character was not foundn"); 

  return 0; 

  } 

strrev 

  功 能: 串倒转 

  用 法: char *strrev(char *str); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *forward = "string"; 

  printf("Before strrev(): %sn", forward); 

  strrev(forward); 

  printf("After strrev(): %sn", forward); 

  return 0; 

  } 

strset 

  功 能: 将一个串中的所有字符都设为指定字符 

  用 法: char *strset(char *str, char c); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  int main(void) 

  { 

  char string[10] = "123456789"; 

  char symbol = 'c'; 

  printf("Before strset(): %sn", string); 

  strset(string, symbol); 

  printf("After strset(): %sn", string); 

  return 0; 

  } 

strspn 

  功 能: 在串中查找指定字符集子集的第一次出现 

  用 法: int strspn(char *str1, char *str2); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  #include <alloc.h> 

  int main(void) 

  { 

  char *string1 = "1234567890"; 

  char *string2 = "123DC8"; 

  int length; 

  length = strspn(string1, string2); 

  printf("Character where strings differ is at position %dn", length); 

  return 0; 

  } 

strstr 

  功 能: 在串中查找指定字符串的第一次出现 

  用 法: char *strstr(char *str1, char *str2); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  int main(void) 

  { 

  char *str1 = "Borland International", *str2 = "nation", *ptr; 

  ptr = strstr(str1, str2); 

  printf("The substring is: %sn", ptr); 

  return 0; 

  } 

strtod 

  功 能: 将字符串转换为double型值 

  用 法: double strtod(char *str, char **endptr); 

  程序例: 

  #include <stdio.h> 

  #include <stdlib.h> 

  int main(void) 

  { 

  char input[80], *endptr; 

  double value; 

  printf("Enter a floating point number:"); 

  gets(input); 

  value = strtod(input, &endptr); 

  printf("The string is %s the number is %lfn", input, value); 

  return 0; 

  } 

strtok 

  功 能: 查找由在第二个串中指定的分界符分隔开的单词 

  用 法: char *strtok(char *str1, char *str2); 

  程序例: 

  #include <string.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  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("%sn", 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("%sn", p); 

  return 0; 

  } 

strtol 

  功 能: 将串转换为长整数 

  用 法: long strtol(char *str, char **endptr, int base); 

  程序例: 

  #include <stdlib.h> 

  #include <stdio.h> 

  int main(void) 

  { 

  char *string = "87654321", *endptr; 

  long lnumber; 

  /* strtol converts string to long integer */ 

  lnumber = strtol(string, &endptr, 10); 

  printf("string = %s long = %ldn", string, lnumber); 

  return 0; 

  } 

strupr 

  功 能: 将串中的小写字母转换为大写字母 

  用 法: char *strupr(char *str); 

  程序例: 

  #include <stdio.h> 

  #include <string.h> 

  int main(void) 

  { 

  char *string = "abcdefghijklmnopqrstuvwxyz", *ptr; 

  /* converts string to upper case characters */ 

  ptr = strupr(string); 

  printf("%sn", ptr); 

  return 0; 

  } 

swab 

  功 能: 交换字节 

  用 法: void swab (char *from, char *to, int nbytes); 

  程序例: 

  #include <stdlib.h> 

  #include <stdio.h> 

  #include <string.h> 

  char source[15] = "rFna koBlrna d"; 

  char target[15]; 

  int main(void) 

  { 

  swab(source, target, strlen(source)); 

  printf("This is target: %sn", target); 

  return 0; 

  } 

  PS:isalpha()是字符函数,不是字符串函数, 

isalpha 

  原型:extern int isalpha(int c); 

  用法:#include <ctype.h> 

  功能:判断字符c是否为英文字母 

  说明:当c为英文字母a-z或A-Z时,返回非零值,否则返回零。 

  举例: 

  // isalpha.c 

  #include <syslib.h> 

  #include <ctype.h> 

  #include <stdio.h> 

  main() 

  { 

  int c; 

  clrscr(); // clear screen 

  printf("Press a key"); 

  for(;;) 

  { 

  c=getchar(); 

  clrscr(); 

  printf("%c: %s letter",c,isalpha(c)?"is":"not"); 

  } 

  return 0; // just to avoid warnings by compiler 

  } 

pascal 

  1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn. 

  例:concat('11','aa')='11aa'; 

  2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为l的子串。 

  例:copy('abdag',2,3)='bda' 

  3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。 

  delete(大串。开始位置,个数)删除子串 

  例:s:='abcde';delete(s,2,3);结果s:='ae' 

  delete('1234567',5,2)='12347' 

  delete('abcded123',1,1)='bcded123' 

  4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置 

  例:s:=abc;insert('12',s,2);结果s:='a12bc' 

  5. 求字符串长度 length(s) 例:length('12abc')=5 

  6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0. 

  例:pos('ab','12abcd')=3 

  7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。 

  例:upcase('a')='A' 

  8. 数值转换为数串。 过程 Str(x,s) 把数值x化为数串s. 

  例:str(12345,s); 结果s='12345' 

  9. 数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则l=0,不成功则I为无效字符的序数 

  例:val('1234',x,I);结果 x:=1234 

  10.求字符序号。ord(a)求char型字符a的ASCII码。 

  例:ord('A')=65.