欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言笔记 16_标准库&stdio&stdlib&string&time

程序员文章站 2022-03-12 10:45:54
简介 stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。 库变量 下面是头文件 stdio.h 中定义的变量类型: | 序号 | 变量 & 描述 | | : | : | | 1 | size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 | | 2 | FI ......

<stdio.h>

简介

stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。

库变量

下面是头文件 stdio.h 中定义的变量类型:

序号 变量 & 描述
1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。
2 file 这是一个适合存储文件流信息的对象类型。
3 fpos_t 这是一个适合存储文件中任何位置的对象类型。

库宏

下面是头文件 stdio.h 中定义的宏:

序号 宏 & 描述
1 null 这个宏是一个空指针常量的值。
2 **_iofbf、_iolbf** 和 **_ionbf** 这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。
3 bufsiz 这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。
4 eof 这个宏是一个表示已经到达文件结束的负整数。
5 fopen_max 这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。
6 filename_max 这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。
7 l_tmpnam 这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。
8 seek_cur、seek_endseek_set 这些宏是在 fseek 函数中使用,用于在一个文件中定位不同的位置。
9 tmp_max 这个宏是 tmpnam 函数可生成的独特文件名的最大数量。
10 stderr、stdinstdout 这些宏是指向 file 类型的指针,分别对应于标准错误、标准输入和标准输出流。

库函数

下面是头文件 stdio.h 中定义的函数:

为了更好地理解函数,请按照下面的序列学习这些函数,

因为第一个函数中创建的文件会在后续的函数中使用到。

序号 函数 & 描述
1 int fclose(file *stream) 关闭流 stream。刷新所有的缓冲区。
2 void clearerr(file *stream) 清除给定流 stream 的文件结束和错误标识符。
3 int feof(file *stream) 测试给定流 stream 的文件结束标识符。
4 int ferror(file *stream) 测试给定流 stream 的错误标识符。
5 int fflush(file *stream) 刷新流 stream 的输出缓冲区。
6 int fgetpos(file stream, fpos_t pos) 获取流 stream 的当前文件位置,并把它写入到 pos。
7 file fopen(const char filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
8 size_t fread(void ptr, size_t size, size_t nmemb, file stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。
9 file freopen(const char filename, const char mode, file stream) 把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。
10 int fseek(file *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
11 int fsetpos(file stream, const fpos_t pos) 设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。
12 long int ftell(file *stream) 返回给定流 stream 的当前文件位置。
13 size_t fwrite(const void ptr, size_t size, size_t nmemb, file stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。
14 删除给定的文件名 filename,以便它不再被访问。
15 把 old_filename 所指向的文件名改为 new_filename。
16 void rewind(file *stream) 设置文件位置为给定流 stream 的文件的开头。
17 void setbuf(file stream, char buffer) 定义流 stream 应如何缓冲。
18 int setvbuf(file stream, char buffer, int mode, size_t size) 另一个定义流 stream 应如何缓冲的函数。
19 file *tmpfile(void) 以二进制更新模式(wb+)创建临时文件。
20 生成并返回一个有效的临时文件名,该文件名之前是不存在的。
21 int fprintf(file stream, const char format, ...) 发送格式化输出到流 stream 中。
22 发送格式化输出到标准输出 stdout。
23 发送格式化输出到字符串。
24 int vfprintf(file stream, const char format, va_list arg) 使用参数列表发送格式化输出到流 stream 中。
25 使用参数列表发送格式化输出到标准输出 stdout。
26 使用参数列表发送格式化输出到字符串。
27 int fscanf(file stream, const char format, ...) 从流 stream 读取格式化输入。
28 从标准输入 stdin 读取格式化输入。
29 从字符串读取格式化输入。
30 int fgetc(file *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
31 char fgets(char str, int n, file *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
32 int fputc(int char, file *stream) 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
33 int fputs(const char str, file stream) 把字符串写入到指定的流 stream 中,但不包括空字符。
34 int getc(file *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
35 从标准输入 stdin 获取一个字符(一个无符号字符)。
36 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
37 int putc(int char, file *stream) 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。
38 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
39 把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。
40 int ungetc(int char, file *stream) 把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。
41 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。
42 格式字符串到 str 中。

<stdlib.h>

简介

stdlib .h 头文件定义了四个变量类型、一些宏和各种通用工具函数。

库变量

下面是头文件 stdlib.h 中定义的变量类型:

序号 变量 & 描述
1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。
2 wchar_t 这是一个宽字符常量大小的整数类型。
3 div_t 这是 div 函数返回的结构。
4 ldiv_t 这是 ldiv 函数返回的结构。

库宏

下面是头文件 stdlib.h 中定义的宏:

序号 宏 & 描述
1 null 这个宏是一个空指针常量的值。
2 exit_failure 这是 exit 函数失败时要返回的值。
3 exit_success 这是 exit 函数成功时要返回的值。
4 rand_max 这个宏是 rand 函数返回的最大值。
5 mb_cur_max 这个宏表示在多字节字符集中的最大字符数,不能大于 mb_len_max。

库函数

下面是头文件 stdlib.h 中定义的函数:

序号 函数 & 描述
1 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
2 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
3 把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。
4 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
5 把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。
6 把参数 str 所指向的字符串转换为一个无符号长整数(类型为 unsigned long int 型)。
7 分配所需的内存空间,并返回一个指向它的指针。
8 释放之前调用 calloc、mallocrealloc 所分配的内存空间。
9 分配所需的内存空间,并返回一个指向它的指针。
10 尝试重新调整之前调用 malloccalloc 所分配的 ptr 所指向的内存块的大小。
11 使一个异常程序终止。
12 当程序正常终止时,调用指定的函数 func
13 使程序正常终止。
14 搜索 name 所指向的环境字符串,并返回相关的值给字符串。
15 由 string 指定的命令传给要被命令处理器执行的主机环境。
16 执行二分查找。
17 数组排序。
18 返回 x 的绝对值。
19 分子除以分母。
20 返回 x 的绝对值。
21 分子除以分母。
22 返回一个范围在 0 到 rand_max 之间的伪随机数。
23 该函数播种由函数 rand 使用的随机数发生器。
24 返回参数 str 所指向的多字节字符的长度。
25 把参数 str 所指向的多字节字符的字符串转换为参数 pwcs 所指向的数组。
26 检查参数 str 所指向的多字节字符。
27 把数组 pwcs 中存储的编码转换为多字节字符,并把它们存储在字符串 str 中。
28 检查对应于参数 wchar 所给出的多字节字符的编码。

<string.h>

简介

string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。

库变量

下面是头文件 string.h 中定义的变量类型:

序号 变量 & 描述
1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。

库宏

下面是头文件 string.h 中定义的宏:

序号 宏 & 描述
1 null 这个宏是一个空指针常量的值。

库函数

下面是头文件 string.h 中定义的函数:

序号 函数 & 描述
1 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。
2 str1str2 的前 n 个字节进行比较。
3 从 src 复制 n 个字符到 dest
4 另一个用于从 src 复制 n 个字符到 dest 的函数。
5 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
6 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
7 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
8 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
9 str1 所指向的字符串和 str2 所指向的字符串进行比较。
10 str1str2 进行比较,最多比较前 n 个字节。
11 str1str2 进行比较,结果取决于 lc_collate 的位置设置。
12 src 所指向的字符串复制到 dest
13 src 所指向的字符串复制到 dest,最多复制 n 个字符。
14 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
15 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。
16 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
17 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。
18 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。
19 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
20 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。
21 分解字符串 str 为一组字符串,delim 为分隔符。
22 根据程序当前的区域选项中的 lc_collate 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。

<time.h>

简介

time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。

库变量

下面是头文件 time.h 中定义的变量类型:

序号 变量 & 描述
1 size_t 是无符号整数类型,它是 sizeof 关键字的结果。
2 clock_t 这是一个适合存储处理器时间的类型。
3 time_t is 这是一个适合存储日历时间类型。
4 struct tm 这是一个用来保存时间和日期的结构。

tm 结构的定义如下:

struct tm {
   int tm_sec;         /* 秒,范围从 0 到 59        */
   int tm_min;         /* 分,范围从 0 到 59        */
   int tm_hour;        /* 小时,范围从 0 到 23        */
   int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
   int tm_mon;         /* 月,范围从 0 到 11        */
   int tm_year;        /* 自 1900 年起的年数        */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6    */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365    */
   int tm_isdst;       /* 夏令时                */
};

库宏

下面是头文件 time.h 中定义的宏:

序号 宏 & 描述
1 null 这个宏是一个空指针常量的值。
2 clocks_per_sec 这个宏表示每秒的处理器时钟个数。

库函数

下面是头文件 time.h 中定义的函数:

序号 函数 & 描述
1 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
2 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。
3 返回一个表示当地时间的字符串,当地时间是基于参数 timer。
4 返回 time1 和 time2 之间相差的秒数 (time1-time2)。
5 timer 的值被分解为 tm 结构,并用协调世界时(utc)也被称为格林尼治标准时间(gmt)表示。
6 timer 的值被分解为 tm 结构,并用本地时区表示。
7 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
8 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
9 计算当前日历时间,并把它编码成 time_t 格式。

参考自: