当前位置:   article > 正文

字符(串)函数这么多,总有你用的上的吧!一篇带你搞定常用字符(串)函数_字符串函数有哪些,以及怎么用

字符串函数有哪些,以及怎么用

1.strlen()------求字符串长度

size_t strlen ( const char * str )

        实参传入一个不能更改的字符串数组的首地址,返回无符号整数。字符串数组即为目标字符串,返回值即为该字符串的长度。注意:该函数计数以‘\0'作为结束标志,所以要确保待求字符串数组是有结束标志的,否则返回值为随机值。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. return 0;
  8. }

 2.strcpy()------字符串拷贝

char * strcpy ( char * destination, const char * source )

        将source所指的字符串数组拷贝一份到destination中,以’\0‘为结束标志,返回destination的地址。注意:1.destination数组容量必须要够大,能够装下source的内容。2.会将'\0'拷贝至destination中。3.destination必须为可变数组。

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

 3.strcat()------连接两个字符串

char * strcat ( char * destination, const char * source )

        将source中的字符串连接到destination后面,返回destination的地址。注意:1.destination必须足够大。2.两个字符串必须有'\0'作为结尾。3.不能自己给自己连接。

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

        

 4.strcmp()------比较两个字符串

int strcmp ( const char * str1, const char * str2 )

        对两个字符串进行比较,比较方式为:依次对每对字符的ASCII值进行比较(位置一一对应),直到比较出大小。str1>str2返回大于0的数;str1<str2返回小于0的数;str1=str2返回0。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[20] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. char str1[10] = { 0 };
  8. printf("%s\n", strcpy(str1, str));
  9. printf("%s\n", strcat(str, str1));
  10. char str2[] = { "abced" };
  11. printf("%d\n", strcmp(str1, str2));
  12. return 0;
  13. }

 5.strncpy()------拷贝指定数量字符

char * strncpy ( char * destination, const char * source, size_t num )

对比strcpy()多了一个size_t num参数,即指定将source中num位字符拷贝至destination中。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[20] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. char str1[10] = { 0 };
  8. printf("%s\n", strcpy(str1, str));
  9. printf("%s\n", strcat(str, str1));
  10. char str2[] = { "abced" };
  11. printf("%d\n", strcmp(str1, str2));
  12. char str3[10] = { "0" };
  13. printf("%s\n", strncpy(str3, str2, 2));//将str2的前两个字符拷贝至str3
  14. return 0;
  15. }

6.strncat()------连接指定位数字符至字符串中

char * strncat ( char * destination, const char * source, size_t num )
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[20] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. char str1[10] = { 0 };
  8. printf("%s\n", strcpy(str1, str));
  9. printf("%s\n", strcat(str, str1));
  10. char str2[] = { "abced" };
  11. printf("%d\n", strcmp(str1, str2));
  12. char str3[10] = { "0" };
  13. printf("%s\n", strncpy(str3, str2, 2));
  14. printf("%s\n", strncat(str3, str2, 2));//将str2的前两个字符连接在str3后
  15. return 0;
  16. }

 7.strncmp()------比较字符串前n个字符

int strncmp ( const char * str1, const char * str2, size_t num )
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[20] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. char str1[10] = { 0 };
  8. printf("%s\n", strcpy(str1, str));
  9. printf("%s\n", strcat(str, str1));
  10. char str2[] = { "abced" };
  11. printf("%d\n", strcmp(str1, str2));
  12. char str3[10] = { "0" };
  13. printf("%s\n", strncpy(str3, str2, 2));
  14. printf("%s\n", strncat(str3, str2, 2));
  15. printf("%d\n", strncmp(str, str2, 3));
  16. return 0;
  17. }

8.strstr------寻找子字符串

const char * strstr ( const char * str1, const char * str2 )

        在str1中寻找str2,返回str1中出现str2的地址。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[20] = { "abcdef" };
  6. printf("%zd\n", strlen(str));
  7. char str1[10] = { 0 };
  8. printf("%s\n", strcpy(str1, str));
  9. printf("%s\n", strcat(str, str1));
  10. char str2[] = { "abced" };
  11. printf("%d\n", strcmp(str1, str2));
  12. char str3[10] = { "0" };
  13. printf("%s\n", strncpy(str3, str2, 2));
  14. printf("%s\n", strncat(str3, str2, 2));
  15. printf("%d\n", strncmp(str, str2, 3));
  16. char str4[] = { "def" };
  17. printf("%s\n", strstr(str, str4));
  18. return 0;
  19. }

9.strtok()------指定符号以分割字符串

        

char * strtok ( char * str, const char * delimiters )

      str为待分割的字符串,其中包含非数字,字母的字符(如果没有,那么就无法进行分割);delimiters为包含用作分割字符串的字符的合集。若str为非NULL,那么就返回第一个字符的位置,并且记录下来当前位置。若str为NULL时,从之前记录的位置出发,继续寻找下一个分割字符,并返回下一个分割字符的位置,直到找到\0返回空指针。值得一提的是,strtok()函数会修改字符串的内容,所以如果不希望字符串别修改的话需要创建临时拷贝字符串后进行操作。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char str[] = { "345680229@qq.com" };
  6. //printf("%s\n",strtok(str, "@."));
  7. //printf("%s\n",strtok(NULL, "@."));
  8. //printf("%s\n", strtok(NULL, "@."));
  9. char* ret = NULL;
  10. for (ret = strtok(str, "@."); ret != NULL; ret = strtok(NULL, "@."))
  11. {
  12. printf("%s\n", ret);
  13. }
  14. return 0;
  15. }

 10.strerro------返回错误码对应的错误信息

char * strerror ( int errnum )

        在编译器中存在一个全局变量errnum,当运行时错误发生时,errnum会被赋上相应的错误码。

每个错误码都有对应的错误信息,这个函数就是将错误码转化成对应的错误信息。

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. for (int i = 0; i < 10; i++)
  6. printf("%s\n", strerror(i));
  7. return 0;
  8. }

 11.字符分类函数------用于判断是否是指定字符类型

iscntrl 任何控制字符

isspace 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v'

isdigit 十进制数字 0~9

isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F

islower 小写字母a~z isupper 大写字母A~Z isalpha 字母a~z或A~Z

isalnum 字母或者数字,a~z,A~Z,0~9

ispunct 标点符号,任何不属于数字或者字母的图形字符(可打印)

isgraph 任何图形字符

isprint 任何可打印字符,包括图形字符和空白字符

当判断为真时返回非0,判断为假时返回0,以下举两个简单的例子:

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. int main()
  4. {
  5. if (islower('a'))
  6. printf("是小写字母\n");
  7. if (isupper('A'))
  8. printf("是大写字母");
  9. }

12.字符转换tolower(),toupper()------将字符大写转换为小写或小写转换为大写 

        int tolower(int c);

        int toupper(int c);

        显然,两个函数都是对字符的ASCII值进行操作,返回值也是字符所对应的ASCII值。

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. int main()
  4. {
  5. printf("%c\n", tolower('A'));
  6. printf("%c", toupper('a'));
  7. return 0;
  8. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/71520
推荐阅读
相关标签
  

闽ICP备14008679号