标准C库内容简介
标准C库函数是C语言标准库(Standard C Library)中的一系列预定义函数,它们为C程序员提供了常用的功能和操作
。
- 这些函数涵盖了各种领域,如输入输出、字符串处理、内存管理、数学计算、时间和日期处理等。标准C库函数遵循C语言标准(如C89、C99、C11等),这使得程序员可以在不同的操作系统和平台上使用这些函数,从而实现跨平台编程。
标准C库函数通常包含在头文件中,例如:
stdio.h
:包含了输入输出相关的函数,如printf()、scanf()、fgets()等。stdlib.h
:包含了通用工具函数,如malloc()、free()、atoi()等。string.h
:包含了字符串处理函数,如strcpy()、strcat()、strcmp()等。math.h
:包含了数学函数,如sin()、cos()、sqrt()等。time.h
:包含了时间和日期处理函数,如time()、strftime()、difftime()等。
在C程序中,要使用这些库函数,需要先使用#include指令包含对应的头文件,然后就可以调用库函数了。例如,要使用printf()函数,你需要在程序开头添加#include <stdio.h>,然后在代码中调用printf()函数。
头文件<stdio.h>的常用函数
- perror函数(打印错误信息)
- 标准库C函数fgets、scanf、getchar(用于从文件或标准输入中读取一行字符串,从标准输入按照指定格式读取数据、从标准输入设备读取一个字符)
- 标准C库函数fprintf(),sprintf(),snprintf()的函数使用方法(往文件中写入数据,将变量的值转换成字符串输出)
头文件<time.h>的常用函数
头文件<string.h>的常用函数
头文件<stdlib.h>的常用函数
头文件<sys/types.h>
<sys/types.h>是一个C语言标准库头文件,它包含了许多用于表示各种数据类型的类型定义和宏。这个头文件主要用于POSIX和UNIX系统编程。尽管<sys/types.h>头文件没有直接定义函数,但它为其他系统和库函数提供了重要的类型定义和宏。
<sys/types.h>定义的宏
以下是<sys/types.h>中定义的一些主要类型和宏:
-
文件和进程相关类型:
- pid_t:用于表示进程ID。
off_t:用于表示文件偏移量,通常用于文件I/O操作。
mode_t:用于表示文件权限和类型的位掩码。
uid_t:用于表示用户ID。
gid_t:用于表示组ID。
nlink_t:用于表示文件的硬链接数。
ino_t:用于表示文件的索引节点号。
- pid_t:用于表示进程ID。
-
时间相关类型:
- time_t:用于表示时间,通常用于时间操作。
-
大小和长度相关类型:
size_t:用于表示对象的大小,如数组或字符串的长度。
ssize_t:用于表示可以为负数的大小,如read()和write()函数的返回值。
-
其他类型:
- clock_t:用于表示处理器时间。
useconds_t:用于表示微秒数。
- clock_t:用于表示处理器时间。
<sys/types.h>为其他函数提供了基本类型定义
虽然<sys/types.h>头文件本身没有定义函数,但它为许多其他头文件和库函数提供了基础类型定义。
例如,<unistd.h>
、<fcntl.h>、<sys/stat.h>和<dirent.h>等头文件包含的函数会使用到<sys/types.h>中定义的类型。这些函数包括:
-
文件操作相关函数:
open()
:打开或创建文件。close()
:关闭文件描述符。read()
:从文件描述符中读取数据。write()
:向文件描述符中写入数据。lseek()
:改变文件描述符的当前读写位置。
-
进程操作相关函数:
fork()
:创建子进程。getpid()
:获取进程ID。getppid()
:获取父进程ID。
-
用户和组操作相关函数:
getuid()
:获取用户ID。getgid()
:获取组ID。
-
目录操作相关函数:
opendir()
:打开一个目录。readdir()
:读取目录中的条目。closedir()
:关闭一个目录。
头文件<sys/stat.h>
<sys/stat.h> 是一个标准C库中的头文件,它包含了一系列用于处理文件状态的宏定义、数据类型和函数。这个头文件主要用于获取和操作文件的属性信息,例如文件大小、创建时间、修改时间等。
<sys/types.h>定义的数据类型
-
struct stat:这个结构体用于保存文件状态信息。它包含了如下字段:
- st_mode:文件的权限和类型
- st_ino:文件的 inode 编号
- st_dev:包含文件的设备ID
- st_rdev:指定特殊设备的设备ID
- st_nlink:硬链接数量
- st_uid:文件所有者的用户ID
- st_gid:文件所属组的ID
- st_size:文件的大小,以字节为单位
- st_atime:文件的最后访问时间
- st_mtime:文件的最后修改时间
- st_ctime:文件的创建时间
<sys/types.h>定义的宏
在 <sys/stat.h> 头文件中,有以下几类重要的宏定义:
-
文件类型宏定义:
这些宏可以用来检查文件类型
,例如:- S_ISREG(st_mode):检查文件是否为普通文件
- S_ISDIR(st_mode):检查文件是否为目录
- S_ISCHR(st_mode):检查文件是否为字符设备
- S_ISBLK(st_mode):检查文件是否为块设备
- S_ISFIFO(st_mode):检查文件是否为命名管道(FIFO)
- S_ISLNK(st_mode):检查文件是否为符号链接
- S_ISSOCK(st_mode):检查文件是否为套接字
-
文件权限宏定义:
这些宏可以用来检查文件权限
,例如:- S_IRUSR:文件所有者的读权限
- S_IWUSR:文件所有者的写权限
- S_IXUSR:文件所有者的执行权限
- S_IRGRP:文件所属组的读权限
- S_IWGRP:文件所属组的写权限
- S_IXGRP:文件所属组的执行权限
- S_IROTH:其他用户的读权限
- S_IWOTH:其他用户的写权限
- S_IXOTH:其他用户的执行权限
<sys/types.h>定义的常用函数
在 <sys/stat.h> 头文件中,有以下几个重要的函数:
头文件<unistd.h>的常用函数
<unistd.h> 是一个在 Unix 和类 Unix 操作系统中使用的 POSIX(可移植操作系统接口)标准头文件,它提供了许多与系统调用和操作系统服务相关的函数、宏和类型。
这些函数和宏用于执行诸如文件操作、进程控制、内存管理等任务。
头文件<dirent.h>
<dirent.h> 是标准 C 库的一个头文件,它提供了一组用于处理目录和文件的函数。
这个头文件主要用于在文件系统中遍历目录和获取文件信息
。
以下是 <dirent.h> 中的主要数据结构:
-
struct dirent:这是一个表示目录条目的结构,通常包含以下成员:
- ino_t d_ino:文件的 inode 号
- char d_name[]:文件名(以 null 结尾的字符串)
-
DIR:这是一个表示目录流的不透明数据类型。用户不需要直接访问此数据结构的内容,而是使用操作opendir、readdir、closedir等函数操作它。
头文件<dirent.h>的常用函数
头文件<signal.h>
<signal.h> 是标准 C 库中的一个头文件,它包含了用于处理信号的函数和宏。信号是操作系统发送给进程的一种通知,通常用于告知进程某个事件发生,如程序错误、中断请求等。
<signal.h>头文件定义了一组信号常量,以及用于处理信号的函数原型。
头文件<signal.h>定义的信号常量(宏)
-
信号常量:以下是一些常用的信号常量,它们表示了不同类型的信号。
- SIGINT:程序中断信号,通常由用户按下 Ctrl+C 产生。
- SIGILL:非法指令信号,表示程序尝试执行无效的指令。
- SIGFPE:浮点异常信号,表示算术运算错误,如除以零或溢出等。
- SIGSEGV:段错误信号,表示程序尝试访问无效的内存区域。
- SIGTERM:终止信号,通常用于请求程序正常退出。
- SIGABRT:异常中止信号,表示程序异常终止,例如调用 abort() 函数。
- SIGALRM:定时器信号,表示定时器到期。
- SIGHUP:挂起信号,通常用于通知进程重新读取配置文件或终止。
- SIGUSR1 和 SIGUSR2:用户自定义信号,用于程序员自定义用途。