在字符串函数_1这篇博客中,曾说过strlen、strcmp、strcpy、strcat和字符串搜索函数,需要说一下,其实还有其它的字符串操作的函数,分别有strncmp、strncpy、strncat以及strcoll、strcspn、strerror、strpbrk、strspn、strstr、strtod、strtok、strtol、strtoul和strxfrm函数等等。
其中前三个分别是strcmp、strcpy和strcat的安全函数,即限制字符串的个数,这里不多说了。
本篇主要说一下strcoll、strcspn、strerror、strpbrk、strspn这几个函数:
它和strcmp函数可以说是完全等价的,就不再介绍了
size_t strcspn(const char * str1, const char * str2);
功能:函数返回str1 开头连续n个字符都不含字符串str2内字符的字符数
例1:
# include <stdio.h> # include <string.h> int main(void) { char *s1 = "hello world!"; char *s2 = "who"; int n; n = strcspn(s1, s2); printf("%c", s1[n]); return 0; }输出结果为:
char * strerror(int num);
功能:函数返回一个被定义的与某错误代码相关的错误信息。
例2:
# include <stdio.h> # include <string.h> # include <stdlib.h> int main(void) { FILE * fp; int err; char * mes; if(NULL == (fp = fopen("/usr/aaa", "r+"))) { printf("errno=%d\n", err); mes=strerror(err); printf("%s\n",mes); } exit(0); }输出结果为:
char * strpbrk(const char * str1, const char * str2);
功能:函数返回一个指针,它指向字符串str2中任意字符在字符串str1 首次出现的位置,如果不存在返回NULL。
例3:
# include <stdio.h> # include <string.h> int main(void) { char * s1 = "Hello World!"; char * s2 = "WTO"; char * p; p = strpbrk(s1, s2); if(p) printf("%s\n", p); else printf("Not Found!\n"); p = strpbrk(s1, "asd"); if(p) printf("%s\n", p); else printf("Not Found!\n"); p = strpbrk(s1, "sss"); if(p) printf("%s", p); else printf("Not Found!\n"); return 0; }输出结果为:
size_t strspn(const char * str1, const char * str2);
功能:函数返回字符串str1中第一个不包含于字符串str2的字符的索引。
例4:
# include <string.h> # include <stdio.h> int main(void) { char * s = "This program is licensed under the termsof the GNU General Public License version 3"; printf("%lu\n", strspn(s, "Thi")); printf("%lu\n", strspn(s, "s")); return 0; }输出结果为:
所有程序均在ubuntu12.04下codeblocks10.05下运行通过
如有错误,欢迎指出