本文归纳了C语言中可对字符与字符串进行处理处理的一些常用库函数,可供学习时参考查阅。
一、处理单个字符的库函数
头文件:cpype.h
*int isalnum(int c) :
检查参数c是不是一个字母或数字,是则返回1,否则返 回0;(参数c是一个字符变量,但在C语言中,字 符变量等同于其对应的ASCII码值,故参数也可以是一个ASCII码值的整型数值,下同)
* int isalpha(int c):
若参数c是一个英文字母则返回真值,否则返回假;
* int isgraph(int c):
若参数c是一个可打印字符则返回一个真值,否则返回假;
* int islower(int c) 与 int isupper(int c):
测试参数c的大小写;
* int isxdigit(int c):
若参数c是一个数字则返回一个真值,否则返回假;
* int ispunct(int c):
若参数c是标点符号或特殊字符则返回一个真值,否则返 回假;
二、处理字符串的库函数
头文件:stdlib.h
* double atof(char* nptr):
字符串转换成浮点型整数;
* int atoi(char* nptr):
字符串转换成整型数;
* int atol(char* nptr):
字符串转换成长整型数;
* char *ecvt(double numer, int ndigits, int *decpt, int *sign):
@number:需要对浮点数number进行转换;
@ndigits:在浮点数中从左向右取的位数;
@decpt:一个整型数的指针,显示浮点数中小数点在第几 位;
@sign:一个整型数的指针,带便数值正负,正则返回0, 否则返回1;
头文件:string.h
* int bcmp(const void *s1, const void *s2, int n)
字符串的比较函数,n为需要比较的两个字符串的前n个 字符,相投则返回真,否则返回假;
* int mencmp(const void *s1, const void *s2, size_n n):
返回字符串中第一个不相同的字符的差值(s1-s2);
* void bcopy( const void *src, void *dest, int n):
@src:需要复制字符的字符串;
@dest:复制到的目标字符串;
@n:需要复制的字符数目;
复制方式为覆盖式复制;
* void *menccopy( void *dest, const void *src, int c, size_t n):
@dest:复制到的目标字符串;
@src:需要复制字符的字符串;
@c:在dest中赋值为c的字符,若查找到这个字符,则返 回下一个字符的指针;
* char *strcpy( char *dest, const void *src)
@dest:复制到的目标字符串;
@src:需要复制字符的字符串;
函数返回字符串dest的指针,使用时必须保证dest有足够 的空间来存储src字符串,否则会发生溢出错误。
* char *strncpy( char*dest, const char*src, int c, size_t n)
@dest:复制到的目标字符串;
@src:需要复制字符的字符串;
@n:在src中需要复制的字符个数;
函数返回dest字符串的头指针。
* void bzero( void *s, int n)
将字符串s的前n个字符赋值为NULL,其后字符不变,即 函数改变了字符串s的值。
* void *menset( void *s, int c, size_t n )
将传入的字符串s的前n个字符都填充为字符c;
* char *index( const char *s, int c )
在字符串s中找出字符c出现的第一个位置,然后将该字 符地址返回。(同rindex)
* char *rindex( const char *s,int c )
用来找出参数s字符串中最后一个出现的参数c 地址,然 后将该字符出现的地址返回。字符串结束字符(NULL) 也 视为字符串一部分。如果找到指定的字符则返回该字符所 在的地址,否则返回0。
* void *menchr( void *s, int c, size_t n )
在字符串s的前n个字符中查找字符c,返回自个字符的指 针地址。
* char *strchr( const char *s,int c )
在字符串s中找出字符c出现的第一个位置,然后将该字 符地址返回,若无字符c则返回0;
* char *strrchr( const char *s,int c )
在字符串s中找出字符c出现的最后一个位置,然后将该 字符地址返回,若无字符c则返回0;
(index VS strchr:也ndex系列函数把字符串中最后的结 束字 符也当是字符串的内容处理也就是你可以这样:
index(str,'\0')和rindex(str,'\0')而strchr系列函数 就不可以了)
* char *strcat( char*dest, const char*src )
函数将src的内容添加到dest后面,并返回指针dest。
* char *strtok( char *s,const char *delim )
分解字符串为一组字符串。s为要分解的字符串,delim为 隔符字符串。首次调用时,s指向要分解的字符串,之 后 再次调用要把s设成NULL。strtok在s中查找包含在delim 中的字符并用NULL('/0')来替换,直到找遍整个字符 串。
返回值:从s开头开始的一个个被分割的串。当没有被分 割的串时则返回NULL。所有delim中包含的字符都会被 滤 掉,并将被滤掉的地方设为一处分割的节点。
鉴于strtok函数叫难理解,看参考如下示例:
int i = 0;
char* p;
char a[30] = "dsggsdfsdadsdadsdsda";
char s[] = "a";
printf("a = %s\n",a);
p = strtok(a,s);
printf("p = %s\n",p);
while(i<4)
{
i++;
p = strtok(NULL,s);
printf("i=%d; p = %s\n",i,p);
getchar();
}
结果: