常用的 C 语言库函数

0x01 <assert.h>

C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。

已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:

#define assert(ignore) ((void)0)

assert 断言就是假设一个情况会发生,然后才会执行他后面的代码。这个宏通常用来判断程序中是否出现了明显非法的数据。如果出现了,则终止程序以免导致严重的后果,同时也能够查找出错误。具体更加详细的用法请参见 assert 断言的用法

0x02 <math.h>

math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的功能都带有一个 double 类型的参数,且都返回 double 类型的结果。

常用的函数:

  1. double pow(double x, double y) 返回 x 的 y 次幂。
#include <stdio.h>
#include <math.h>

int main ()
{
   printf("值 8.0 ^ 3 = %lf\n", pow(8.0, 3));

   printf("值 3.05 ^ 1.98 = %lf", pow(3.05, 1.98));
   
   return(0);
}

/*
值 8.0 ^ 3 = 512.000000
值 3.05 ^ 1.98 = 9.097324
*/
  1. double sqrt(double x) 返回 x 的平方根。

    #include <stdio.h>
    #include <math.h>
    
    int main ()
    {
    
       printf("%lf 的平方根是 %lf\n", 4.0, sqrt(4.0) );
       printf("%lf 的平方根是 %lf\n", 5.0, sqrt(5.0) );
       
       return(0);
    }
    
    /*
    4.000000 的平方根是 2.000000
    5.000000 的平方根是 2.236068
    */
    
  2. double ceil(double x) 返回大于或等于 x 的最小的整数值。

#include <stdio.h>
#include <math.h>

int main ()
{
   float val1, val2, val3, val4;

   val1 = 1.6;
   val2 = 1.2;
   val3 = 2.8;
   val4 = 2.3;

   printf ("value1 = %.1lf\n", ceil(val1));
   printf ("value2 = %.1lf\n", ceil(val2));
   printf ("value3 = %.1lf\n", ceil(val3));
   printf ("value4 = %.1lf\n", ceil(val4));
   
   return(0);
}

/*
value1 = 2.0
value2 = 2.0
value3 = 3.0
value4 = 3.0
*/
  1. double fabs(double x) 返回 x 的绝对值。

    #include <stdio.h>
    #include <math.h>
    
    int main ()
    {
       int a, b;
       a = 1234;
       b = -344;
      
       printf("%d 的绝对值是 %lf\n", a, fabs(a));
       printf("%d 的绝对值是 %lf\n", b, fabs(b));
       
       return(0);
    }
    
    /*
    1234 的绝对值是 1234.000000
    -344 的绝对值是 344.000000
    */
    
  2. double floor(double x) 返回小于或等于 x 的最大的整数值。

#include <stdio.h>
#include <math.h>

int main ()
{
   float val1, val2, val3, val4;

   val1 = 1.6;
   val2 = 1.2;
   val3 = 2.8;
   val4 = 2.3;

   printf("Value1 = %.1lf\n", floor(val1));
   printf("Value2 = %.1lf\n", floor(val2));
   printf("Value3 = %.1lf\n", floor(val3));
   printf("Value4 = %.1lf\n", floor(val4));
   
   return(0);
}

/*
Value1 = 1.0
Value2 = 1.0
Value3 = 2.0
Value4 = 2.0
*/
  1. double fmod(double x, double y) 返回 x 除以 y 的余数。

    #include <stdio.h>
    #include <math.h>
    
    int main ()
    {
       float a, b;
       int c;
       a = 9.2;
       b = 3.7;
       c = 2;
       printf("%f / %d 的余数是 %lf\n", a, c, fmod(a,c));
       printf("%f / %f 的余数是 %lf\n", a, b, fmod(a,b));
       
       return(0);
    }
    
    /*
    9.200000 / 2 的余数是 1.200000
    9.200000 / 3.700000 的余数是 1.800000
    */
    

这里选择使用函数而不是运算符 % 的原因是:% 运算法只支持两个 int 类型的整型之间的运算,不支持其他类型之间的取余。

0x03 <stdio.h> & <stdlib.h> & <string.h> & <time.h>

这三个头文件中的函数大部分都是很重要的,所以就不单列出来了,有需要的话可以看菜鸟相关页的详解:

<stdio.h> 库函数&宏

<stdlib.h> 库函数&宏

<string.h> 库函数&宏

<time.h> 库函数&宏

posted @ 2021-04-23 17:24  绯狱丸丶  阅读(349)  评论(0编辑  收藏  举报