天天看點

C語言字元串函數集錦(一)

說起字元串函數,我想大家都不陌生。字元串函數對二進制資料、字元串和表達式執行不同的運算。下面總結了C語言中的字元串函數。

1、函數名: stpcpy

功 能: 拷貝一個字元串到另一個

用 法:

  1. char *stpcpy(char *destin, char *source);  

程式例:

  1. #include <stdio.h>   
  2. #include <string.h>   
  3. int main(void)   
  4. {   
  5. char string[10];   
  6. char *str1 = "abcdefghi";   
  7. stpcpy(string, str1);   
  8. printf("%s\n", string);   
  9. return 0;   
  10. }  

2、函數名: strcat

功 能: 字元串拼接函數

用 法:

  1. char *strcat(char *destin, char *source);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char destination[25];   
  6. char *blank = " ", *c = "C++", *Borland = "Borland";   
  7. strcpy(destination, Borland);   
  8. strcat(destination, blank);   
  9. strcat(destination, c);   
  10. printf("%s\n", destination);   
  11. return 0;   
  12. }  

3、函數名: strchr

功 能: 在一個串中查找給定字元的第一個比對之處\

用 法:

  1. char *strchr(char *str, char c);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char string[15];   
  6. char *ptr, c = 'r';   
  7. strcpy(string, "This is a string");   
  8. ptr = strchr(string, c);   
  9. if (ptr)   
  10. printf("The character %c is at position: %d\n", c, ptr-string);   
  11. else   
  12. printf("The character was not found\n");   
  13. return 0;   
  14. }  

4、函數名: strcmp

功 能: 串比較

用 法:

  1. int strcmp(char *str1, char *str2);  

看Asic碼,str1>str2,傳回值 > 0;兩串相等,傳回0

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";   
  6. int ptr;   
  7. ptr = strcmp(buf2, buf1);   
  8. if (ptr > 0)   
  9. printf("buffer 2 is greater than buffer 1\n");   
  10. else   
  11. printf("buffer 2 is less than buffer 1\n");   
  12. ptr = strcmp(buf2, buf3);   
  13. if (ptr > 0)   
  14. printf("buffer 2 is greater than buffer 3\n");   
  15. else   
  16. printf("buffer 2 is less than buffer 3\n");   
  17. return 0;   
  18. }  

5、函數名: strncmpi

功 能: 将一個串中的一部分與另一個串比較, 不管大小寫

用 法:

  1. int strncmpi(char *str1, char *str2, unsigned maxlen);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char *buf1 = "BBB", *buf2 = "bbb";   
  6. int ptr;   
  7. ptr = strcmpi(buf2, buf1);   
  8. if (ptr > 0)   
  9. printf("buffer 2 is greater than buffer 1\n");   
  10. if (ptr < 0)   
  11. printf("buffer 2 is less than buffer 1\n");   
  12. if (ptr == 0)   
  13. printf("buffer 2 equals buffer 1\n");   
  14. return 0;   
  15. }  

6、函數名: strcpy

功 能: 串拷貝

用 法:

  1. char *strcpy(char *str1, char *str2);  

程式例:

  1. #include <stdio.h>   
  2. #include <string.h>   
  3. int main(void)   
  4. {   
  5. char string[10];   
  6. char *str1 = "abcdefghi";   
  7. strcpy(string, str1);   
  8. printf("%s\n", string);   
  9. return 0;   
  10. }  

7、函數名: strcspn

功 能: 在串中查找第一個給定字元集内容的段

用 法:

  1. int strcspn(char *str1, char *str2);  

程式例:

  1. #include <stdio.h>   
  2. #include <string.h>   
  3. #include <alloc.h>   
  4. int main(void)   
  5. {   
  6. char *string1 = "1234567890";   
  7. char *string2 = "747DC8";   
  8. int length;   
  9. length = strcspn(string1, string2);   
  10. printf("Character where strings intersect is at position %d\n", length);   
  11. return 0;   
  12. }  

8、函數名: strdup

功 能: 将串拷貝到建立的位置處

用 法:

  1. char *strdup(char *str);  

程式例:

  1. #include <stdio.h>   
  2. #include <string.h>   
  3. #include <alloc.h>   
  4. int main(void)   
  5. {   
  6. char *dup_str, *string = "abcde";   
  7. dup_str = strdup(string);   
  8. printf("%s\n", dup_str);   
  9. free(dup_str);   
  10. return 0;   
  11. }  

9、函數名: stricmp

功 能: 以大小寫不敏感方式比較兩個串

用 法:

  1. int stricmp(char *str1, char *str2);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char *buf1 = "BBB", *buf2 = "bbb";   
  6. int ptr;   
  7. ptr = stricmp(buf2, buf1);   
  8. if (ptr > 0)   
  9. printf("buffer 2 is greater than buffer 1\n");   
  10. if (ptr < 0)   
  11. printf("buffer 2 is less than buffer 1\n");   
  12. if (ptr == 0)   
  13. printf("buffer 2 equals buffer 1\n");   
  14. return 0;   
  15. }  

10、函數名: strerror 

功 能: 傳回指向錯誤資訊字元串的指針

用 法:

  1. char *strerror(int errnum);  

程式例:

  1. #include <stdio.h>   
  2. #include <errno.h>   
  3. int main(void)   
  4. {   
  5. char *buffer;   
  6. buffer = strerror(errno);   
  7. printf("Error: %s\n", buffer);   
  8. return 0;   
  9. }  

11、函數名: strcmpi

功 能: 将一個串與另一個比較, 不管大小寫

用 法:

  1. int strcmpi(char *str1, char *str2);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char *buf1 = "BBB", *buf2 = "bbb";   
  6. int ptr;   
  7. ptr = strcmpi(buf2, buf1);   
  8. if (ptr > 0)   
  9. printf("buffer 2 is greater than buffer 1\n");   
  10. if (ptr < 0)   
  11. printf("buffer 2 is less than buffer 1\n");   
  12. if (ptr == 0)   
  13. printf("buffer 2 equals buffer 1\n");   
  14. return 0;   
  15. }  

12、函數名: strncmp

功 能: 串比較

用 法:

  1. int strncmp(char *str1, char *str2, int maxlen);  

程式例:

  1. #include <string.h>   
  2. #include <stdio.h>   
  3. int main(void)   
  4. {   
  5. char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";   
  6. int ptr;   
  7. ptr = strncmp(buf2,buf1,3);   
  8. if (ptr > 0)   
  9. printf("buffer 2 is greater than buffer 1\n");   
  10. else   
  11. printf("buffer 2 is less than buffer 1\n");   
  12. ptr = strncmp(buf2,buf3,3);   
  13. if (ptr > 0)   
  14. printf("buffer 2 is greater than buffer 3\n");   
  15. else   
  16. printf("buffer 2 is less than buffer 3\n");   
  17. return(0);   
  18. }  

繼續閱讀