在字符串函数_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这几个函数:
strcoll()
它和strcmp函数可以说是完全等价的,就不再介绍了
strcspn()
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;
}
输出结果为:
strerror()
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);
}
输出结果为:
strpbrk()
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;
}
输出结果为:
strspn()
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下运行通过
如有错误,欢迎指出