c语言标准库头文件和函数

news/2024/12/20 4:11:11/文章来源:https://www.cnblogs.com/fjuyingwei/p/18618203

by:符映维 2024-12-20

《C语言标准库头文件及其函数》

1. stdio.h (Standard Input and Output)

  • 1.1 int printf(const char *format, ...);   格式化输出到stdout(屏幕)。
  • 1.2 int scanf(const char *format, ...);   从stdin(键盘)读取格式化输入。
  • 1.3 FILE *fopen(const char *path, const char *mode);   打开文件流。
  • 1.4 int fclose(FILE *stream);    关闭文件流。
  • 1.5 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);    从流读取数据。
  • 1.6 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);    向流写入数据。
  • 1.7 int fprintf(FILE *stream, const char *format, ...);    格式化输出到指定文件流。
  • 1.8 int fscanf(FILE *stream, const char *format, ...);    从指定文件流读取格式化输入。
  • 1.9 char *fgets(char *str, int n, FILE *stream);    从流读取一行字符串。
  • 1.10 int fputs(const char *str, FILE *stream);    向流写入一个字符串。
----------------------------------------------------------------------------
  • 1.11 FILE *tmpfile(void);    创建一个临时文件。(stdio.h的扩展功能)
  • 1.12 char *tmpnam(char *s);     生成一个唯一的临时文件名。(stdio.h的扩展功能)

2. stdlib.h (Standard Library)

  • 2.1 void *malloc(size_t size);    分配内存。
  • 2.2 void free(void *ptr);    释放之前分配的内存。
  • 2.3 void *calloc(size_t nmemb, size_t size);    分配并初始化为零的内存块。
  • 2.4 void *realloc(void *ptr, size_t size);    改变已分配内存块的大小。
  • 2.5 int abs(int j);    返回整数的绝对值。
  • 2.6 double atof(const char *nptr);    将字符串转换成浮点数。
  • 2.7 int atoi(const char *nptr);    将字符串转换成整数。
  • 2.8 long atol(const char *nptr);    将字符串转换成长整数。
  • 2.9 void exit(int status);    终止程序执行。
  • 2.10 div_t div(int numer, int denom);    整数除法,并返回商和余数。
  • 2.11 char *getenv(const char *name);    获取环境变量的值。
  • 2.12 int system(const char *command);    执行系统命令。
---------------------------------------------------------------------------
  • 2.13 void srand(unsigned int seed);    初始化随机数生成器种子。(stdlib.h的扩展功能)
  • 2.14 int rand(void);    生成伪随机数。(stdlib.h的扩展功能)
  • 2.15 int mbtowc(wchar_t *pwc, const char *s, size_t n);    多字节字符转换为宽字符。(stdlib.h的扩展功能)
  • 2.16 int wctomb(char *s, wchar_t wchar); ,    宽字符转换为单字节字符。(stdlib.h的扩展功能)
  • 2.17 size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps);    多字节字符串转换为宽字符字符串。(stdlib.h的扩展功能)
  • 2.18 size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, mbstate_t *ps); 宽   字符字符串转换为多字节字符串。(stdlib.h的扩展功能)

3. string.h (String Handling)

  • 3.1 char *strcpy(char *dest, const char *src);    复制字符串。
  • 3.2 char *strncpy(char *dest, const char *src, size_t n);    复制最多n个字符的字符串。
  • 3.3 char *strcat(char *dest, const char *src);    连接两个字符串。
  • 3.4 char *strncat(char *dest, const char *src, size_t n);    连接最多n个字符的字符串。
  • 3.5 size_t strlen(const char *s);    计算字符串长度。
  • 3.6 int strcmp(const char *s1, const char *s2);    比较两个字符串。
  • 3.7 int strncmp(const char *s1, const char *s2, size_t n);    比较最多n个字符的字符串。
  • 3.8 char *strchr(const char *s, int c);    查找首次出现的字符c。
  • 3.9 char *strrchr(const char *s, int c);    查找最后一次出现的字符c。
  • 3.10 void *memset(void *s, int c, size_t n);    填充n个字节的内存为特定值。
  • 3.11 void *memcpy(void *dest, const void *src, size_t n);    复制内存块。
  • 3.12 void *memmove(void *dest, const void *src, size_t n);    安全复制可能重叠的内存区域。

4. math.h (Mathematical Functions)

  • 4.1 double sin(double x);    正弦函数。
  • 4.2 double cos(double x);    余弦函数。
  • 4.3 double tan(double x);    正切函数。
  • 4.4 double asin(double x);    反正弦函数。
  • 4.5 double acos(double x);    反余弦函数。
  • 4.6 double atan(double x);    反正切函数。
  • 4.7 double atan2(double y, double x);    以弧度为单位的反正切函数,考虑象限。
  • 4.8 double sinh(double x);    双曲正弦函数。
  • 4.9 double cosh(double x);    双曲余弦函数。
  • 4.10 double tanh(double x);    双曲正切函数。
  • 4.11 double exp(double x);    指数函数。
  • 4.12 double log(double x);    自然对数。
  • 4.13 double pow(double x, double y);    幂函数,计算x的y次方。
  • 4.14 double sqrt(double x);    平方根函数。
  • 4.15 double fabs(double x);    绝对值函数。
  • 4.16 double ceil(double x);    向上取整。
  • 4.17 double floor(double x);    向下取整。
  • 4.18 double fmod(double x, double y);    浮点数取模。

5. time.h (Time and Date)

  • 5.1 time_t time(time_t *tloc);    获取当前日历时间。
  • 5.2 struct tm *localtime(const time_t *timer);    将日历时间转换为本地时间。
  • 5.3 struct tm *gmtime(const time_t *timer);    将日历时间转换为UTC时间。
  • 5.4 char *asctime(const struct tm *tm);    将时间结构转换为ASCII表示。
  • 5.5 size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);    格式化时间字符串。

6. stdarg.h (Variable Argument Lists)

  • 6.1 void va_start(va_list ap, last_fixed_param);    初始化一个变参列表。
  • 6.2 type va_arg(va_list ap, type);    获取变参列表中的下一个参数。
  • 6.3 void va_end(va_list ap);    结束变参列表的使用。

7. ctype.h (Character Handling)

  • 7.1 int isalnum(int c);    检查字符是否为字母或数字。
  • 7.2 int isalpha(int c);    检查字符是否为字母。
  • 7.3 int iscntrl(int c);    检查字符是否为控制字符。
  • 7.4 int isdigit(int c);    检查字符是否为十进制数字。
  • 7.5 int isgraph(int c);    检查字符是否有图形表示(非空且非空白)。
  • 7.6 int islower(int c);    检查字符是否为小写字母。
  • 7.7 int isprint(int c);    检查字符是否可打印(包括空格)。
  • 7.8 int ispunct(int c);    检查字符是否为标点符号。
  • 7.9 int isspace(int c);    检查字符是否为空白字符。
  • 7.10 int isupper(int c);    检查字符是否为大写字母。
  • 7.11 int isxdigit(int c);    检查字符是否为十六进制数字。
  • 7.12 int tolower(int c);    将字符转换为小写。
  • 7.13 int toupper(int c);    将字符转换为大写。

8. errno.h (Error Number Definitions)

  • 8.1 errno    当发生错误时,系统调用或库函数会设置此变量。

9. limits.h (Integer Limits)

  • 9.1 CHAR_BIT    字符类型的位数。
  • 9.2 SCHAR_MIN, SCHAR_MAX    有符号字符类型的最小值和最大值。
  • 9.3 UCHAR_MAX    无符号字符类型的最小值和最大值。
  • 9.4 SHRT_MIN, SHRT_MAX    短整型的最小值和最大值。
  • 9.5 USHRT_MAX    无符号短整型的最大值。
  • 9.6 INT_MIN, INT_MAX    整型的最小值和最大值。
  • 9.7 UINT_MAX    无符号整型的最大值。
  • 9.8 LONG_MIN, LONG_MAX    长整型的最小值和最大值。
  • 9.9 ULONG_MAX    无符号长整型的最大值。

10. float.h (Floating-Point Limits)

  • 10.1 FLT_RADIX    浮点数的基数。
  • 10.2 FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG    浮点类型的有效位数。
  • 10.3 FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON    浮点类型可以表示的最小正数x,使得1.0 + x != 1.0。
  • 10.4 FLT_MIN, DBL_MIN, LDBL_MIN    正常浮点数的最小值。
  • 10.5 FLT_MAX, DBL_MAX, LDBL_MAX    浮点数的最大值。

11. locale.h (Localization)

  • 11.1 struct lconv *localeconv(void);    返回当前区域设置的数值格式信息。
  • 11.2 char *setlocale(int category, const char *locale);    设置或查询区域设置。

12. setjmp.h (Nonlocal Jumps)

  • 12.1 int setjmp(jmp_buf env);    保存环境。
  • 12.2 void longjmp(jmp_buf env, int val);    恢复由setjmp保存的环境,并返回给定值。

13. signal.h (Signal Handling)

  • 13.1 void (*signal(int sig, void (*handler)(int)))(int);    设置信号处理程序。
  • 13.2 int raise(int sig);    发送信号给调用进程。

14. wchar.h (Wide Character Functions)

  • 14.1 wchar_t *wcschr(const wchar_t *ws, wchar_t wc);    查找宽字符串中首次出现的宽字符。
  • 14.2 wchar_t *wcscpy(wchar_t *dest, const wchar_t *src);    复制宽字符串。
  • 14.3 size_t wcslen(const wchar_t *ws);    计算宽字符串长度。
  • 14.4 wint_t fgetwc(FILE *stream);    从流读取宽字符。
  • 14.5 wint_t fputwc(wchar_t wc, FILE *stream);    向流写入宽字符。

15. wctype.h (Wide Character Classification and Mapping)

  • 15.1 wint_t towlower(wint_t wc);    将宽字符转换为小写。
  • 15.2 wint_t towupper(wint_t wc);    将宽字符转换为大写。
  • 15.3 int iswalpha(wint_t wc);    检查宽字符是否为字母。
  • 15.4 int iswdigit(wint_t wc);    检查宽字符是否为十进制数字。

16. complex.h (Complex Arithmetic)

  • 16.1 double complex cacos(double complex z);    计算复数的反余弦。
  • 16.2 double complex casin(double complex z);    计算复数的反正弦。
  • 16.3 double complex catan(double complex z);    计算复数的反正切。
  • 16.4 double complex ccos(double complex z);    计算复数的余弦。
  • 16.5 double complex csin(double complex z);    计算复数的正弦。
  • 16.6 double complex ctan(double complex z);    计算复数的正切。
  • 16.7 double complex cexp(double complex z);    计算复数的指数。
  • 16.8 double complex clog(double complex z);    计算复数的自然对数。

17. fenv.h (Floating-Point Environment)

  • 17.1 int feclearexcept(int excepts);    清除指定的浮点异常状态。
  • 17.2 int fegetexceptflag(fexcept_t *flagp, int excepts);    获取指定浮点异常的状态。
  • 17.3 int fesetexceptflag(const fexcept_t *flagp, int excepts);    设置指定浮点异常的状态。
  • 17.4 int fetestexcept(int excepts);    测试指定浮点异常是否发生。
  • 17.5 int fegetround(void);    获取当前舍入方向。
  • 17.6 int fesetround(int round);    设置舍入方向。

18. inttypes.h (Integer Types)

  • 18.1 int8_t, int16_t, int32_t, int64_t    指定宽度的有符号整型。
  • 18.2 uint8_t, uint16_t, uint32_t, uint64_t    指定宽度的无符号整型。
  • 18.3 int_least8_t, int_least16_t, int_least32_t, int_least64_t    至少具有指定宽度的最小有符号整型。
  • 18.4 int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t    尽可能快的指定宽度有符号整型。
  • 18.5 intmax_t, uintmax_t    最大宽度的有符号和无符号整型。

19. stdatomic.h (Atomic Operations)

  • 19.1 _Atomic type    声明一个原子类型的对象。
  • 19.2 atomic_flag    无锁标志,通常用于实现无锁算法。
  • 19.3 atomic_init 和 ATOMIC_VAR_INIT    初始化原子变量。
  • 19.4 atomic_store 和 atomic_load    存储和加载原子值。
  • 19.5 atomic_exchange    交换两个原子值。
  • 19.6 atomic_compare_exchange_strong 和 atomic_compare_exchange_weak    比较并交换两个原子值,分别提供强和弱版本。

20. stdbool.h (Boolean Type and Values)

  • 20.1 bool    布尔类型。
  • 20.2 true    布尔值真。
  • 20.3 false    布尔值假。

21. stdalign.h (Alignment Control)

  • 21.1 alignas    指定最小对齐要求。
  • 21.2 alignof    查询类型的对齐要求。

22. stdnoreturn.h (Nonreturning Functions)

  • 22.1 noreturn    标记函数不会返回给调用者。

23. threads.h (Thread Management)

  • 23.1 thrd_create(thrd_t *thr, thrd_start_t func, void *arg);    创建新线程。
  • 23.2 thrd_join(thrd_t thr, int *res);    等待线程结束。
  • 23.3 thrd_sleep(const struct timespec *duration, struct timespec *remaining);    线程休眠。
  • 23.4 thrd_equal(thrd_t thr1, thrd_t thr2);    判断两个线程ID是否相等。
  • 23.5 thrd_detach(thrd_t thr);    分离一个线程,使其结束时资源自动回收。
  • 23.6 thrd_yield(void);    让出当前线程的时间片。

24. uchar.h (Unicode Character Handling)

  • 24.1 size_t mbrtoc16(uint_least16_t *pc16, const char *s, size_t n, mbstate_t *ps);    多字节字符转换为UTF-16编码。
  • 24.2 size_t c16rtomb(char *s, uint_least16_t c16, mbstate_t *ps);    UTF-16编码转换为多字节字符。
  • 24.3 size_t mbrtoc32(uint_least32_t *pc32, const char *s, size_t n, mbstate_t *ps);    多字节字符转换为UTF-32编码。
  • 24.4 size_t c32rtomb(char *s, uint_least32_t c32, mbstate_t *ps);    UTF-32编码转换为多字节字符。

25. iso646.h (Alternative Operators)

  • 25.1 and    逻辑与(替代&&)。
  • 25.2 or    逻辑或(替代||)。
  • 25.3 not    逻辑非(替代!)。
  • 25.4 bitand    按位与(替代&)。
  • 25.5 bitor    按位或(替代|)。

    这个头文件提供了对ISO 646字符集的支持,它定义了一些宏来为使用非ASCII字符集的编程环境提供替代的操作符号。

26. tgmath.h (Generic Mathematical Functions)

  • 26.1 泛型数学函数
    自动选择合适的浮点类型版本(如float, double, long double)进行数学运算。
    tgmah.h 头文件提供了一组泛型宏,它们可以自动根据参数类型调用对应的数学函数版本,从而简化了代码编写。

27. stddef.h (Standard Type Definitions)

  • 27.1 size_t    无符号整数类型,表示对象大小。
  • 27.2 ptrdiff_t    带符号整数类型,表示指针之间的差值。
  • 27.3 wchar_t    宽字符类型。
  • 27.4 NULL    空指针常量。
  • 27.5 offsetof(type, member)    计算结构体成员相对于结构体起始位置的偏移量。

28. 以下是按C89到C18进行归类

  • 28.1 C89/C90 标准

    • 28.1.1 stdio.h    标准输入输出函数。
    • 28.1.2 stdlib.h    标准库函数,如内存分配、转换函数等。
    • 28.1.3 string.h    字符串处理函数。
    • 28.1.4 math.h    数学运算函数。
    • 28.1.5 time.h    时间日期处理函数。
    • 28.1.6 stdarg.h    可变参数列表支持。
    • 28.1.7 ctype.h    字符处理函数。
    • 28.1.8 errno.h    错误码定义。
    • 28.1.9 limits.h    数据类型极限值。
    • 28.1.10 float.h    浮点数极限值。
    • 28.1.11 locale.h    区域化支持。
    • 28.1.12 setjmp.h    非本地跳转功能。
    • 28.1.13 signal.h    信号处理。
  • 28.2 C95 (ISO/IEC 9899:1995) 标准

    • 28.2.1 iso646.h    提供替代操作符符号,适用于非ASCII字符集。
  • 28.3 C99 标准

    • 28.3.1 complex.h    复数算术操作。
    • 28.3.2 fenv.h    浮点环境控制。
    • 28.3.3 inttypes.h    定义了具有特定宽度的整数类型。
    • 28.3.4 stdbool.h    布尔类型和值。
    • 28.3.5 stdint.h    定义了具有特定宽度的整数类型。
    • 28.3.6 tgmath.h    泛型数学宏。
    • 28.3.7 wchar.h    宽字符和宽字符串处理。
    • 28.3.8 wctype.h    宽字符分类和映射。
  • 28.4 C11 标准

    • 28.4.1 stdalign.h    对齐控制工具。
    • 28.4.2 stdatomic.h    原子操作支持。
    • 28.4.3 stdnoreturn.h    标记不返回的函数。
    • 28.4.4 threads.h    线程管理函数。
    • 28.4.5 uchar.h    UTF-16 和 UTF-32 编码支持。
  • 28.5 C17 (C18) 标准

    C17实际上是一个维护更新,主要用于修复缺陷并澄清一些规范,而没有引入新的特性或库。因此,在这个版本中并没有新增加的标准库头文件。

29. 常见的非标准库

  • 29.1 conio.h    提供控制台输入输出函数,在DOS和Windows平台上常见。
  • 29.2 ncurses.h    提供终端处理和文本用户界面的功能,常用于Unix/Linux平台。
  • 29.3 windows.h    提供访问Windows API的接口,只适用于Windows操作系统。

30. 其他注意事项(请注意,C语言标准库是有限的,而实际开发中可能会使用大量的第三方库来满足特定需求)例如:

  • 30.1 OpenGL 和 SDL    图形和游戏开发。
  • 30.2 libcurl    网络通信。
  • 30.3 SQLite3    嵌入式数据库操作。
  • 30.4 JSON-C 或 cJSON    处理JSON数据格式。

    这些第三方库大大扩展了C语言的能力,使开发者能够更轻松地完成复杂任务。

31. 总结

     以上内容按照不同C标准版本对C语言标准库头文件进行了分类,每个版本都增加了新的功能和改进,以适应不断变化的编程需求和技术进步。 到目前为止,本文档已经涵盖了C语言标准库中的大部分主要头文件。 如果你正在处理特定的问题领域,例如多线程编程或需要严格控制数据类型的大小和对齐方式,那么这些库将特别有用。 了解它们可以帮助你更好地利用C语言进行开发,这些内容展示了每个库中的一些关键函数及其简要描述。 对于更详细的使用方法和参数说明,建议参考权威的C语言文档或在线资源,如ISO C标准文档、官方C语言参考资料等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855679.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任意尺度图像超分辨率的基准技术分析

任意尺度图像超分辨率的基准技术分析 在计算机视觉领域,超分辨率(SR)一直是一个突出的研究领域。它的目的是从低分辨率(LR)图像重建高分辨率(HR)图像。最近,主要基于学习图像的连续表示的任意尺度图像SR取得了重大进展。 这些方法通常需要在特定范围内(即1.0-4.0)使用…

用于端到端场景图生成的密集关系变换器

用于端到端场景图生成的密集关系变换器 场景图生成旨在捕捉图像中对象之间的详细空间和语义关系,由于标签不完整、长尾关系类别和关系语义重叠,这具有挑战性。现有的基于Transformer的方法要么对对象和谓词采用不同的查询,要么对关系三元组采用整体查询,因此学习低频关系的…

新书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》

由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新颖、实践性很强、图文并茂。 由清华大学出版社资深编辑赵佳霓老师…

vue3/Nuxt中使用Toast

前言 实在是懒得手写一个toast,于是找了一下。 过程 https://github.com/Maronato/vue-toastification/tree/next vue-toastification这个库很有名,默认是vue2的,如果需要使用vue3,需要在安装时,指定next的tag,比如 pnpm i vue-toastification@next但是这个库的最新版也已…

什么是状态管理,有哪些实现?

概念 “状态管理”是指在应用程序中有效地组织、更新和共享数据的方式。比起数据库和本地之类的持久层,有时我们需要存储一些应用运行过程中的临时数据,其中大部分可能都不会存入数据库。因此,状态这个词还是挺贴切的。比较熟悉的是vue中Pinia提供的状态管理,他是全局可访问…

[计算机网络/Linux] 基于CENTOS7自建DNS服务

序最初的诉求:自建DNS,篡改公开网站的url为自建web服务的url。在使用浏览器进行网上冲浪的时候,我们只需要输入网址即可访问,但是在网络中,网址并不是一个有效的东西,真正起作用的是网址所对应的IP地址,但是IP地址是一堆没有规律的数字,难以记忆、使用,所以就有了DNS服…

[计算机网络] 基于CENTOS7自建DNS服务

序最初的诉求:自建DNS,篡改公开网站的url为自建web服务的url。在使用浏览器进行网上冲浪的时候,我们只需要输入网址即可访问,但是在网络中,网址并不是一个有效的东西,真正起作用的是网址所对应的IP地址,但是IP地址是一堆没有规律的数字,难以记忆、使用,所以就有了DNS服…

systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway.

日志显示这些内容说明可能是 fstab 服务自动挂载之前 /home 不为空systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway. ░░ Subject: 挂载点不为空 ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ 目…

Linux服务器上部署Redis流程

前言 Redis版本7.0.4 服务器版本:Linux CentOS 8.0 64位 1.下载Redis 进入官网找到下载地址 https://redis.io/download 进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,如下命令: wget http://download.redis.io/releases/redis-7.0.4.tar…

[Tools] Buzz – 免费开源的AI语音转文字工具

Buzz 介绍 https://github.com/chidiwilliams/buzz Buzz是一款基于OpenAI Whisper模型构建的离线语音转文字工具,适用于Windows、macOS和Linux系统。Buzz能将麦克风输入或音频、视频文件实时转换为文字,支持多种格式导入导出,如TXT、SRT和VTT。Buzz的转换速度快,准确率高,…

Skipping题解(贪心,队列,迪杰斯特拉,思维)

原题链接 https://codeforces.com/problemset/problem/2023/B 大致题意 类似一个游戏游戏规则如下:从1开始,可以选择吃掉ai,之后只能选择比当前下标小的(明显,如果开始就选择吃掉a1,那么游戏就结束了)。 当然还可以选择不吃ai,那么可以跳到[1,b[i]](b[i]与i的大小关系…

arcpy开发初探

是第一次将软件操作和书写代码合二为一 一、配置环境 arcpy是无法pip下载到的,只有满足以下条件才能调用到: 1、运行代码时候需要使用arcgis下面的python做编译器去运行 2、arcmap是需要启动着的 先写个测试代码 import arcpy print(arcpy.GetInstallInfo()[Version]) input_…