QQ172082520
main (void) {
char buf[80]; int i;
gets(buf); i = atoi(buf);
printf(\,buf,i); }
4. 参 阅 xtoi( ),atof( ),atol( ) 5. 返回值 返回一个有符号的整数。如果在字符串中没有发现任何数字,则返回0。
3.9 ATOL函数
1.提 要 #include
表达式转换成长整型。 3.例 程 #include
main (void) {
char buf[80]; long i; gets(buf); i = atol(buf);
printf(\,buf,i); }
4.参 阅 atoi( ),atof( ) 5.返回值 返回一个长整型数。如果字符串中没有发现任何数字,返回值为0。
3.10 CEIL函数
1. 提 要
45
QQ172082520
#include
main (void) {
double j;
scanf(\,&j);
printf(\,j,ceil(j)); }
3.11 COS函数
1. 提 要 #include
#define C 3.141592/180.0 void
main (void) {
double i;
for(i = 0;i <= 180.0;i += 10)
printf(\,cos = %f\\n\,i,sin(i*C),cos(i*C)); }
4. 参 阅 sin( ),tan( ),asin( ),acos( ),atan( ),atan2( ) 5. 返回值 返回一个双精度数,区间为[-1,1]。
3.12 COSH、SINH、TANH函数
1. 提 要
46
QQ172082520
#include
main (void) {
printf(\,cosh(1.5)); printf(\,sinh(1.5)); printf(\,tanh(1.5)); }
4. 返回值 cosh( )函数返回双曲余弦值,sinh( )函数返回双曲正弦值,tanh( )函数返回双曲正切值。
3.13 CTIME函数
1. 提 要
#include
char * ctime (time_t * t) 2. 描 述 ctime( )函数将函数参数所指的时间转换成字符串,其结构与asctime( )函数所描述的相同,并且精确到秒。以下例程将打印出当前的时间和日期。 3. 例 程 #include
main (void) {
time_t clock; time(&clock);
printf(\,ctime(&clock)); }
4. 参 阅 gmtime( ),localtime( ),asctime( ),time( ) 5. 返回值
47
QQ172082520
本函数返回一个指向该字符串的指针。
注意:由于编译器不会提供time( )程序,故它需要由用户给定。详情请参阅time( )函数。
6. 数据类型 typedef long time_t
3.14 DI、EI函数
1. 提 要 #include
#include
void interrupt tick(void) {
count++; }
long getticks(void) {
long val; /*在访问count变量前禁止中断,保证访问的连续性*/ di( );
val = count; ei( );
return val; }
3.15 DIV函数
1. 提 要 #include
div_t div (int numer,int demon) 2. 描 述 div( )函数实现分子除以分母,得到商和余数。 3. 例 程 #include
48
QQ172082520
#include
main (void) {
div_t x;
x = div(12345,66);
printf(\,remainder = %d\\n\,x.quot,x.rem); }
4. 返回值 返回一个包括商和余数的结构体div_t。. 5. 数据类型 typedef struct {
int quot; int rem; } div_t;
3.16 EEPROM_READ、EEPROM_WRITE函数
1. 提 要 #include
unsigned char eeprom_read (unsigned char addr);
void eeprom_write (unsigned char addr,unsigned char value); 2. 描 述 这些函数允许访问片内EEPROM(如果片内有EEPROM)。EEPROM不是可直接寻址的寄存器空间,当需要访问EEPROM时,就需要将一些特定的字节序列加载到EEPROM控制寄存器中。写EEPROM是一个缓慢的过程。故eeprom_write( )函数在写入下一个数据前,会通过查询恰当的寄存器来确保前一个数据已经写入完毕。另外,读EEPROM可以在一个指令周期内完成,所以没有必要查询读操作是否完成。 3. 例 程 #include
main (void) {
unsigned char data; unsigned char address; address = 0x10;
data = eeprom_read(address); }
注意:如果调用eeprom_write( )函数后需即刻调用eeprom_read( )函数,则必须查询EEPROM寄存器
49