单片机C语言C51的常用库函数Word文件下载.docx
《单片机C语言C51的常用库函数Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机C语言C51的常用库函数Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
其中,c为待判断的字符,如果是十进制数字则返回1,否则返回0。
可打印字符检查函数
可打印字符检查函数用于检查形参字符是否为可打印字符,其函数原型如下:
bitisgraph(charc);
可打印字符的取值范围为0x21~0x7C,不包含空格,如果是可打印字符则返回1,否则返回0。
(
包含空格的可打印字符检查函数
包含空格的可打印字符检查函数用于检查形参字符是否为可打印字符以及空格,其函数原型如下:
bitisprint(charc);
其中,c为待判断字符。
如果是则返回1,否则返回0。
该函数与isgraph的区别在于包含了空格符,空格符为0x20。
格式字符检查函数
格式字符检查函数用于检查形参字符是否为标点、空格或格式字符,其函数原型如下:
bitispunct(charc);
其中,c为待判断字符,如果是则返回1,否则返回0。
小写英文字母检查函数
小写英文字母检查函数用于检查形参字符是否为小写英文字母,其函数原型如下:
bitislower(charc);
如果是小写英文字母则返回1,否则返回0。
大写英文字母检查函数
大写英文字母检查函数用于检查形参字符是否为大写英文字母,其函数原型如下:
bitisupper(charc);
^
如果是大写英文字母则返回1,否则返回0。
控制字符检查函数
控制字符检查函数用于检查形参字符是否为控制字符,其函数原型如下:
bitisspace(charc);
如果是控制字符则返回1,否则返回0。
控制字符包括:
空格、制表符、回车、换行、垂直制表符和送纸,其取值范围为0x09~0x0d,或为0x20。
十六进制数字检查函数
十六进制数字检查函数用于检查形参字符是否为十六进制数字,其函数原型如下:
bitisxdigit(charc);
如果是16进制数字字符则返回1,否则返回0。
十六进制数字转换函数
十六进制数字检查函数用于转换形参字符为十六进制数字,其函数原型如下:
—
chartoint(charc);
其中,c为待转换字符。
该函数将形参字符0~9、a~f(大小写无关)转换为16进制数字。
其中,对于字符0~9,返回值为0H~9H,对于ASCII字符a~f(大小写无关),返回值为0AH~0FH。
大写字符转换函数
大写字符转换函数用于将大写字符转换为小写字符,其函数原型如下:
chartolower(charc);
其中,c为待转换的大写字符。
如果字符参数不在A~Z之间,则该函数将不起作用,而直接返回原字符。
小写字符转换函数
小写字符转换函数用于将小写字符转换为大写字符,其函数原型如下:
chartoupper(charc);
其中,c为待转换的小写字符。
如果字符参数不在a~z之间,则该函数将不起作用,而直接返回原字符。
ASCII字符转换函数
.
ASCII字符转换函数用于将任何字符型参数缩小到有效的ASCII范围之内,其函数原型如下:
chartoascii(charc);
其中,c为待转换的字符。
该函数执行的操作是将形参数值和0x7f做与运算,从而去掉第7位以上的所有位数。
如果形参已是有效的ASCII字符,则不作处理,直接返回原字符。
大写字符宏转换函数
大写字符宏转换函数用于大写字符转换为小写字符,其函数原型如下:
char_tolower(charc);
这其实是一个由宏定义完成的操作,其功能是将字符参数c与常数0x20逐位进行或运算,从而将大写字符转换为小写字符。
小写字符宏转换函数
小写字符宏转换函数用于小写字符转换为大写字符,其函数原型如下:
char_toupper(charc);
这其实是一个由宏定义完成的操作,其功能是将字符参数c与常数0xdf逐位进行与运算,从而将小写字符转换为大写字符。
\
2字符串函数
字符串函数的原型声明包含在头文件中。
在C51语言中,字符串应包括2个或多个字符,字符串的结尾以空字符来表示。
字符串函数通过接受指针串来对字符串进行处理。
常用的字符串函数介绍如下。
字符查找函数
字符查找函数用于在字符串中顺序查找字符,其函数原型如下:
void*memchr(void*sl,charval,intlen);
其中,s1为输入字符串,val为待查找的字符,len为查找的长度范围。
该函数的功能是在字符串s1中顺序搜索前len个字符以找出字符val,如果找到则返回sl中指向val的指针,如果没有找到则返回NULL。
指定长度的字符串比较函数
指定长度的字符串比较函数用于按照指定的长度比较两个字符串的大小,其函数原型如下:
charmemcmp(void*s1,void*s2,intlen);
其中,s1和s2为输入字符串,len为比较的长度。
该函数的功能是逐个比较字符串sl和s2的前len个字符,如果相等则返回0,如果字符串s1大于s2,则返回一个正数,如果字符串s1小于s2,则返回一个负数。
如果两个字符串的长度小于len,该函数仍将一直比较len个字符,这种情况下,有可能结果是错误的。
因此应该保证len不能超过最短字符串的长度。
字符串复制函数
…
字符串复制函数用于复制指定长度的字符串,其函数原型如下:
void*memcpy(void*dest,void*src,intlen);
其中,dest为目标字符串,src为源字符串,len为复制的长度。
该函数的功能是从src所指向的字符串中复制len个字符到dest字符串中,其返回值指向dest中的最后一个字符的指针。
带终止字符的字符串复制函数
带终止字符的字符串复制函数用于复制字符串,如果遇到终止字符则停止复制,其函数原型如下:
void*memccpy(void*dest,void*src,charval,intlen);
其中,dest为目标字符串,src为源字符串,val为终止字符,len为复制的长度。
该函数的功能是复制字符串src中的len个字符到dest中,复制len个字符后则返回NULL。
如果遇到字符val则停止复制,此时返回一个指向dest中的下一个元素的指针。
字符串移动函数
字符串移动函数同样用于复制字符串,其函数原型如下:
void*memmove(void*dest,void*src,intlen);
其中,dest为目标字符串,src为源字符串,len为复制长度。
其功能与memcpy相同,但是复制区间src与dest可以发生交迭。
¥
字符串填充函数
字符串填充函数用于按规定的字符填充字符串,其函数原型如下:
void*memset(void*s,charval,intlen);
其中,s为待填充的字符串,val为填充字符,len为填充的长度。
该函数实现的操作是用字符val来填充字符串s,共填充len个单元
字符串追加函数
字符串追加函数用于复制字符串到另一个字符串的尾部,其函数原型如下:
void*strcat(char*s1,char*s2);
其中,s1为目标字符串,s2为待复制的字符串。
该函数实现的操作是将字符串s2复制到字符串s1的尾部。
其中字符串s1要有足够的大小来保存两个字符串。
该函数的返回值指向字符串s1中的第一个字符的指针。
指定长度的字符串追加函数
指定长度的字符串追加函数用于复制指定长度的字符串到另一个字符串的尾部,其函数原型如下:
void*strncat(,char*s1,char*s2,intn);
&
其中,s1为目标字符串,s2为待复制的字符串,n为复制的长度。
该函数实现的操作是从字符串s2中复制n个字符添加到字符串s1的尾部。
其中,如果字符串s2的长度比n小,则将全部复制字符串s2(包括串结束符)。
字符串比较函数
字符串比较函数用于比较两个字符串的大小,其函数原型如下:
charstrcmp(char*s1,char*s2);
其中,s1和s2为待比较的字符串。
该函数的功能是比较字符串s1和s2,如果两者相等则返回0;
如果s1<
s2,则返回一个负数;
如果s1>
s2,则返回一个正数。
包含结束符的字符串比较函数
包含结束符的字符串比较函数用于比较两个字符串的大小,其函数原型如下:
char*strncmp(char*s1,char*s2,intn);
其中,s1和s2为待比较的字符串,n为比较的长度。
该函数的功能是比较字符串s1和s2的前n个字符,如果两者相等则返回0;
这里需要和memcmp函数相区别,如果字符串的长度小于n,则strncmp函数比较到字符串结束符后便停止,这和memcmp函数是不一样的。
字符串覆盖函数
字符串覆盖函数用于将一个字符串覆盖另一个字符串,其函数原型如下:
】
char*strcpy(char*s1,char*s2);
其中,s1为目标字符串,s2为源字符串。
该函数的功能是将字符串s2(包括结束符)复制到字符串s1中的第1个字符指针处。
这里需要注意和strcat函数相区别,strcat函数将字符串s2复制到字符串s1的末尾。
指定长度的字符串覆盖函数
指定长度的字符串覆盖函数用于将一个指定长度的字符串覆盖另一个字符串,其函数原型如下:
char*strncpy(char*s1,char*s2,intn);
其中,s1为目标字符串,s2为源字符串,n为长度。
该函数实现的操作是从字符串s2(包括结束符)中复制n个字符到字符串s1中的第1个字符指针处。
如果字符串s2的长度小于n,则s1串以0补齐到长度n。
获取字符串个数函数
获取字符串个数函数用于返回字符串中字符总数,其函数原型如下:
char*strlen(char*s1);
其中,s1为输入字符串。
该函数的功能是获取字符串s1中的字符个数,返回值的大小不包括结尾的字符串结束符。
搜索字符串函数
?
搜索字符串函数用于搜索字符串出现的位置,其函数原型如下:
char*strstr(constchar*s1,char*s2);
其中,s1为目标字符串,s2为搜索的字符串。
该函数实现的操作是在字符串s1中搜索第一次出现字符串s2的位置,并返回该处的指针。
如果字符串s1中不包括字符串s2,则该函数返回一个空指针。
搜索字符函数
搜索字符函数用于搜索字符出现的位置,其函数原型如下:
char*strchr(char*s1,charc);
其中,s1为目标字符串,c为待搜索的字符。
该函数的功能是搜索字符串s1中是否包含字符c,如果包含则返回第一次指向该字符的指针,否则返回NULL。
被搜索的字符可以是串结束符,此时返回值是指向串结束符的指针。
返回位置值的字符搜索函数
返回位置值的字符搜索函数用于搜索并返回字符出现的位置,其函数原型如下:
intstrpos(char*s1,charc);
其中,s1为目标字符串,c为搜索的字符。
该函数的功能是查找并返回字符c在字符串s1中第一次出现的位置值,没有找到该字符则返回-1,s1串首字符的位置值是0。
strpos函数的功能与strchr类似,只不过返回值不同。
:
字符包含函数
字符包含函数用于检查字符串中是否包含某字符,其函数原型如下:
char*strrchr(char*s1,charc);
其中,s1为目标字符串,c为查找的字符。
该函数的功能是搜索字符串s1中是否包含字符c,如果包含则返回最后一次指向该字符的指针,否则返回NULL。
返回位置值的字符包含函数
返回位置值的字符包含函数同样用于检查字符串中是否包含某字符,其函数原型如下:
intstrrpos(char*s1,charc);
该函数的功能是查找并返回字符c在字符串s1中最后一次出现的位置值,没有找到该字符则返回-1,s1串首字符的位置值是0。
strrpos函数的功能与strrchr类似,只不过返回值不同。
在指定字符集中查找不包含字符函数
在指定字符集中查找不包含字符函数用于查找不包含在指定字符集中的字符,其函数原型如下:
intstrspn(char*s1,char*set);
。
其中,s1为目标字符串,set为字符集。
该函数的功能是搜索字符串s1中第一个不包含在set串中的字符,返回值是字符串s1中包括在set中的字符的个数。
如果s1中所有的字符都包含在set中,则返回s1的长度(不包括结束符)。
如果set是空字符串则返回0。
在指定字符集中查找包含字符函数
在指定字符集中查找包含字符函数用于查找包含在指定字符集中的字符,其函数原型如下:
intstrcspn(char*s1,char*set);
该函数的功能是搜索的是第一个包含在set串中字符,返回值是字符串s1中包括在set中的字符的个数。
查找第一个包含字符函数
查找第一个包含字符函数用于查找第一个包含在指定字符集中的字符,其函数原型如下:
char*strpbrk(char*s1,char*set);
该函数的功能是搜索字符串s1中第一个包含在set串中的字符,返回值指向搜索到的字符的指针,如果未找到,则返回NULL。
查找最后一个包含字符函数
查找最后一个包含字符函数用于查找最后一个包含在指定字符集中的字符,其函数原型如下:
、
char*strrpbrk(char*s1,char*set);
该函数的功能是搜索字符串s1中最后一个包含在set串中的字符,返回值指向搜索到的字符的指针,如果未找到,则返回NULL。
3I/O函数
I/O函数主要用于数据的输入输出等操作,C51的I/O库函数的原型声明包含在头文件中。
这些I/O函数使用8051单片机的串行接口进行通信,因此,在使用之前需要先进行串口的初始化。
例如:
SCON=0x50;
.”),这时参数表的长度和参数的数据类型在定义时是未知的。
C51的变量参数表函数包含在头文件中,主要包括如下几个。
函数原型typedefchar*va_list:
其功能为将va_list定义成指向参数表的指针。
函数原型voidva_start(ap,v)。
其功能为初始化ap参数,其一般在一个可变长度参数表的函数中使用。
在使用宏va_arg进行存取前,必须调用函数来初始化可变参数表。
函数原型typedefva_arg(ap,type):
其功能为从ap指向的可变长度参数表中检索type类型的值。
对va_arg的第一次调用将返回在va_start宏中指定的v参数后的第一个参数。
继续调用va_arg将返回剩下的后续参数。
对于每一个参数可以只调用一次,而且必须按照参数表中的参数的次序进行。
函数原型voidva_end(ap)。
其功能为终止在va_start宏中已被初始化的可变长度参数表的指针ap,并且关闭参数表,结束对可变参数表的访问。
9全程跳转函数
全程跳转函数用于正常系列函数的调用和函数结束,还允许从深层函数调用中直接返回。
其原型声明包含在头文件中。
这里介绍一些常用的全程跳转函数。
函数原型typedefcharjmp_buf[_jblen]:
其功能为定义用于保存和恢复程序环境的缓冲区,供setjmp和longjmp所使用,其必须定义为全局变量。
函数原型intsetjmp(jmp_bufenv):
其功能为将程序执行的当前环境状态信息存入变量env中。
当直接调用setjmp时,返回值为0,当从longjmp调用时,返回值为非0。
函数原型voidlongjmp(jmp_bufenv,intretal):
其功能为恢复先前调用setjmp时存在env中的环境状态信息,并从setjmp语句的下一条语句执行。
参数val为调用setjmp的返回值。
10计算结构体成员的偏移量函数
计算结构体成员的偏移量函数包含在头文件中。
其函数声明如下:
intoffsetof(structure,member);
其中,structure为结构体,member为结构体成员。
该函数计算member从开始位置的偏移量,并返回字节形式的偏移量值。
11小结
本章详细讲解了C51语言中常用的库函数,主要包括字符函数、字符串函数、I/O函数、数学函数、标准函数、内部函数、绝对地址访问函数、变量参数表函数、全程跳转函数以及偏移量函数。
这些库函数涵盖了常见的字符、字符串、数学计算、I/O控制等功能,读者在进行程序设计时可以直接调用使用。
因此,熟练掌握和运用本章内容,可以大大减轻程序设计的负担,方便单片机的程序设计。