PICC库函数 下载本文

QQ172082520

gets(buf); i = 0;

while(isalnum(buf[i])) i++;

buf[i] = 0;

printf(\\\n\,buf); }

4.参 阅

toupper( ),tolower( ),toascii( )

3.25 KBHIT函数

1. 提 要 #include bit kbhit (void) 2. 描 述 如果键盘上的字符被按下,函数返回1;否则返回0。通常,该字符可通过getch( )函数读取。 3. 例 程 #include void

main (void) {

int i;

while(!kbhit()) {

cputs(\;

for(i = 0 ; i != 1000 ; i++) continue; } }

4. 参 阅 getch( ),getche( ) 5. 返回值 如果有键被按下,函数将返回1;否则返回0。此外,返回值为1位。

注意:程序的主体需由用户实现,其主要框架可以从sources目录下直接获得。

3.26 LDEXP函数

1. 提 要

#include

double ldexp (double f,int i) 2. 描 述

55

QQ172082520

ldexp( )函数是frexp( )的反函数。它先进行浮点数 f 的指数部分与整数 i 的求和运算,然后返回合成结果。 3. 例 程 #include #include void

main (void) {

double f;

f = ldexp(1.0,10);

printf(\,f); }

4. 参 阅 frexp( ) 5. 返回值 本函数返回浮点数 f 指数部分加上整数 i 后得到的新浮点数。

3.27 LDIV函数

1. 提 要 #include

ldiv_t ldiv (long number,long denom) 2. 描 述 ldiv( )函数实现分子除以分母,得到商和余数。商的符号与精确商的符号一致,绝对值是一个小于精确商绝对值的最大整数。 Ldiv( )函数与div( )函数类似;不同点在于,前者的函数参数和返回值(结构体ldiv_t)的成员都是长整型数据。 3.例 程

#include #include void

main (void) {

ldiv_t lt;

lt = ldiv(1234567,12345);

printf(\,remainder = %ld\\n\,lt.quot,lt.rem); }

4.参 阅 div( ) 5.返回值 返回值是结构体ldiv_t。

56

QQ172082520

6.数据结构 typedef struct { long quot; /*商*/ long rem; /*余数*/ } ldiv_t;

3.28 LOCALTIME函数

1. 提 要 #include

struct tm * localtime (time_t * t) 2. 描 述 本函数把指针t所指的时间分解并且存于结构体中,精确度为秒。其中,t所指的时间必须自1970年1月1日0时0分0秒起,所用的结构体被定义在time.h文件中。localtime( )函数需要考虑全局整型变量time_zone中的内容,因为它包含有本地时区位于格林威治以西的时区数值。由于在MS-DOS环境下无法预先确定这个值,所以,在缺省的条件下,localtime( )函数的返回值将与gmtime( )的相同。 3.例 程 #include #include char * wday[] = {

\,\,\,\, \,\,\}; void

main (void) {

time_t clock; struct tm * tp; time(&clock);

tp = localtime(&clock);

printf(\,wday[tp->tm_wday]); }

4. 参 阅 ctime( ),asctime( ),time( ) 5. 返回值 本函数返回tm结构体型数据。

注意:由于编译器不会提供time( )程序,故它需要由用户给定。详情请参阅time( )函数。

6. 数据结构 typedef long time_t; struct tm {

57

QQ172082520

int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; };

3.29 LOG、LOG10函数

1. 提 要 #include double log (double f) double log10 (double f) 2. 描 述 log( )函数返回f的自然对数值。log10( )函数返回f以10为底的对数值。3. 例 程

#include #include void

main (void) {

double f;

for(f = 1.0;f <= 10.0;f += 1.0)

printf(\,f,log(f)); }

4. 参 阅 exp( ),pow( ) 5. 返回值 如果函数参数为负,返回值为0。

3.30 MEMCHR函数

1. 提 要 #include

/* 初级和中级系列单片机 */

const void * memchr (const void * block,int val,size_t length) /* 高级系列单片机*/

void * memchr (const void * block,int val,size_t length)

58

QQ172082520

2. 描 述 memchr( )函数与strchr( )函数在功能上类似;但前者没有在字符串中寻找null(空)中止字符的功能。memchr( )函数实现在一段规定了长度的内存区域中寻找特定的字节。它的函数参数包括指向被寻内存区域的指针、被寻字节的值和被寻内存区域的长度。函数将返回一个指针,该指针指向被寻内存区域中被寻字节首次出现的单元。 3. 例 程 #include #include

unsigned int ary[ ] = {1,5,0x6789,0x23}; void

main (void) {

char * cp;

cp = memchr(ary,0x89,sizeof ary); if(!cp)

printf(\; else

printf(\,cp - (char *)ary); }

4. 参 阅 strchr( ) 5. 返回值 函数返回指针。该指针指向被寻内存区域中被寻字节首次出现的单元;否则返回NULL。

3.31 MEMCMP函数

1. 提 要

#include

int memcmp (const void * s1, const void * s2, size_t n) 2. 描 述 memcmp()函数的功能是比较两块长度为 n 的内存中变量的大小,类似strncmp()函数返回一个有符号数。与strncmp()函数不同的是,memcmp()函数没有空格结束符。ASCII码字符顺序被用来比较;但如果内存块中包含非ASCII码字符,则返回值不确定。测试是否相等总是可靠的。 3. 例 程

#include #include void

main (void) {

59