写一个数学开方的程序,你不会自己实现平方根算法;打印到屏幕,你也不会自己写驱动。这些都交给 C 标准库函数。下面看标准库是什么、有哪些头文件、为什么要用。

什么是标准库函数

标准库函数(C Standard Library Functions)是 CP 语言内置的函数。它们的原型(prototype)和数据定义分散在各自的头文件(header file)里。要用某个函数,就先包含对应的头文件。

比如要用 printf(),就得引入 stdio.h:

#include <stdio.h>

int main() {
    printf("Catch me if you can.");
    return 0;
}

如果不包含 stdio.h 就想用 printf(),编译器会报错(找不到函数声明)。

为什么要用库函数

  • 经过严格测试:库函数被无数人反复使用、多轮实测,比自己写的可靠得多。
  • 性能优化过:标准库由专业开发者持续改进,代码通常是最优实现。
  • 节省开发时间:打印到屏幕、开方、排序……现成的函数不用自己造轮子。
  • 可移植:库函数在每台电脑上的行为一致,程序更容易跨平台。

示例:用 sqrt() 算平方根

想求一个数的平方根,直接用 math.h 里的 sqrt() 就行:

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

int main() {
    float num, root;
    printf("输入数字: ");
    scanf("%f", &num);

    // 计算 num 的平方根并存储在 root 中
    root = sqrt(num);

    printf("%.2f 的平方根 = %.2f", num, root);
    return 0;
}

输出:

输入数字: 12
12.00 的平方根 = 3.46

常用头文件一览

头文件用途
<stdio.h>标准输入输出:printf、scanf、fopen 等
<stdlib.h>通用工具:动态内存、atoi、qsort、rand、exit 等
<string.h>字符串处理:strlen、strcpy、strcmp 等
<math.h>数学函数:sqrt、pow、abs、三角函数等
<ctype.h>字符分类:isdigit、isalpha、toupper 等
<time.h>日期时间:time、clock、difftime 等
<assert.h>程序断言:assert 宏
<errno.h>错误码:errno 全局变量
<stdarg.h>可变参数:va_list 等(变参函数)
<signal.h>信号处理:signal、raise
<setjmp.h>非本地跳转:setjmp/longjmp
<limits.h>整型范围常量:INT_MAX 等
<float.h>浮点范围常量:DBL_MAX 等
<locale.h>本地化设置:setlocale、localeconv
<stddef.h>通用定义:NULL、size_t、offsetof 等

开始动手的建议

不必强行记忆全部库函数,优先建立检索思路:根据需求定位对应的头文件。数学运算相关功能查阅 math.h,类型转换相关查看 stdlib.h,字符串操作则参考 string.h。使用时查阅函数声明,足以应对大部分常规开发场景。

标准库是一套经过长期验证的函数合集,按照头文件划分模块。编写代码前可以先考虑标准库是否提供现成实现,相比从零编写代码,更加高效稳定。