C语言常见函数
1. 标准输入输出函数
这些函数用于输入和输出操作,定义在头文件 <stdio.h>
中。
printf
:格式化输出到标准输出(如屏幕)。scanf
:从标准输入(如键盘)读取格式化数据。puts
和gets
:处理字符串的简单输入输出。putchar
和getchar
:处理单个字符的输入输出。- 文件操作相关函数:
fopen
,fclose
: 打开和关闭文件。fread
,fwrite
: 二进制文件的读写。fprintf
,fscanf
: 格式化文件操作。fseek
,ftell
: 文件位置操作。
2. 字符串操作函数
字符串处理函数定义在 <string.h>
中。
- 字符串长度与拷贝:
strlen
: 获取字符串长度。strcpy
,strncpy
: 拷贝字符串。
- 字符串连接:
strcat
,strncat
: 连接两个字符串。
- 字符串比较:
strcmp
,strncmp
: 比较两个字符串。
- 字符串查找:
strchr
: 查找字符首次出现的位置。strstr
: 查找子串首次出现的位置。
- 其他:
strtok
: 分割字符串。strdup
: 复制字符串。
3. 数学函数
数学函数定义在 <math.h>
中。
- 常见数学操作:
abs
,fabs
: 计算绝对值。pow
: 计算幂。sqrt
: 计算平方根。ceil
,floor
: 向上或向下取整。fmod
: 计算浮点数取模。
- 三角函数:
sin
,cos
,tan
: 计算三角函数值。asin
,acos
,atan
: 反三角函数。
- 指数与对数:
exp
: 计算指数。log
,log10
: 计算对数。
4. 内存操作函数
内存操作函数定义在 <string.h>
和 <stdlib.h>
中。
memcpy
,memmove
: 拷贝内存。memset
: 初始化内存。memcmp
: 比较内存。- 动态内存分配:
malloc
: 分配内存。calloc
: 分配并初始化内存。realloc
: 调整已分配内存大小。free
: 释放内存。
5. 时间与日期函数
这些函数定义在 <time.h>
中。
time
: 获取当前时间(以秒为单位)。clock
: 获取程序运行时间。difftime
: 计算两个时间点的差值。strftime
: 格式化时间。localtime
,gmtime
: 时间转换为本地时间或GMT时间。
6. 随机数生成函数
随机数生成函数定义在 <stdlib.h>
中。
rand
: 生成随机数。srand
: 设置随机数种子。
7. 实用工具函数
定义在 <stdlib.h>
中。
- 数据转换:
atoi
,atof
,atol
: 转换字符串为整数、浮点数或长整数。strtol
,strtoul
: 字符串转换为长整数。
- 排序与搜索:
qsort
: 快速排序。bsearch
: 二分查找。
- 系统功能:
exit
: 终止程序。system
: 执行系统命令。
8. 类型检查和处理函数
这些函数定义在 <ctype.h>
中,处理字符类型的检查和转换。
- 检查字符:
isalpha
,isdigit
,isalnum
: 检查字母、数字等。isupper
,islower
: 检查大写或小写字母。isspace
: 检查空白字符。
- 转换字符:
toupper
,tolower
: 大小写转换。
9. 信号处理函数
定义在 <signal.h>
中,用于处理信号。
signal
: 定义信号处理函数。raise
: 发送信号。
10. 标准库其他辅助函数
定义在 <stdlib.h>
中。
abs
: 计算整数绝对值。div
: 整数除法并返回商和余数。labs
,ldiv
: 处理长整数的绝对值和除法。
C语言常见Linux系统函数
1. 文件操作系统函数
文件操作是Linux系统函数的重要组成部分,定义在 unistd.h
和 fcntl.h
中。
- 文件描述符操作:
open
,close
: 打开和关闭文件。read
,write
: 读写文件。lseek
: 修改文件指针位置。
- 文件属性操作:
stat
,fstat
,lstat
: 获取文件的元数据。chmod
,fchmod
: 修改文件权限。chown
,fchown
: 修改文件所有者。truncate
,ftruncate
: 修改文件大小。
- 文件锁:
flock
: 文件锁定。
- 高级文件操作:
dup
,dup2
: 复制文件描述符。fcntl
: 文件控制。ioctl
: 设备控制。
- 目录操作(
dirent.h
):opendir
,readdir
,closedir
: 操作目录。mkdir
,rmdir
: 创建和删除目录。
2. 进程管理函数
这些函数用于创建、控制和监视进程,定义在 unistd.h
和 sys/wait.h
中。
- 进程创建:
fork
: 创建子进程。exec
系列函数(execl
,execv
,execle
,execve
等):执行新程序。
- 进程终止:
_exit
: 退出进程。exit
: 标准库退出函数。
- 进程等待:
wait
,waitpid
: 等待子进程结束。
- 进程信号(
signal.h
):kill
: 向进程发送信号。signal
,sigaction
: 注册信号处理函数。pause
: 暂停进程,等待信号。
- 进程身份:
getpid
,getppid
: 获取当前进程或父进程的ID。setuid
,setgid
: 设置用户或组ID。getuid
,getgid
: 获取用户或组ID。
3. 内存管理函数
这些函数用于管理内存,定义在 unistd.h
中。
brk
,sbrk
: 改变数据段的大小。- 虚拟内存映射(
sys/mman.h
):mmap
,munmap
: 内存映射和取消映射。mprotect
: 修改内存区域的保护属性。
4. I/O操作
Linux支持低级别的输入输出操作,这些函数定义在 unistd.h
中。
- 标准输入输出:
read
,write
: 对文件描述符进行读写操作。isatty
: 检查文件描述符是否是终端。
- 非阻塞I/O(
fcntl.h
):fcntl
: 设置文件描述符为非阻塞模式。
- 多路复用(
sys/select.h
或sys/epoll.h
):select
: 监控多个文件描述符。poll
: 类似于select
的多路复用机制。epoll_create
,epoll_wait
,epoll_ctl
: 高效的事件通知机制。
5. 网络通信函数
网络相关函数主要定义在 sys/socket.h
和 netinet/in.h
中。
- 套接字操作:
socket
: 创建套接字。bind
: 绑定地址到套接字。listen
: 设置监听。accept
: 接收连接。connect
: 发起连接。send
,recv
: 发送和接收数据。close
: 关闭套接字。
- 地址操作:
getaddrinfo
,freeaddrinfo
: 地址解析。inet_pton
,inet_ntop
: IP地址转换。gethostname
: 获取主机名。
6. 线程操作函数
线程操作函数定义在 pthread.h
中。
- 线程创建和终止:
pthread_create
: 创建新线程。pthread_exit
: 退出线程。pthread_join
: 等待线程结束。
- 线程同步:
pthread_mutex_init
,pthread_mutex_lock
,pthread_mutex_unlock
: 互斥锁。pthread_cond_wait
,pthread_cond_signal
: 条件变量。pthread_rwlock_init
: 读写锁。
- 线程属性:
pthread_attr_init
,pthread_attr_setdetachstate
: 设置线程属性。
7. 时间与日期操作
时间相关函数定义在 time.h
和 sys/time.h
中。
- 获取时间:
time
: 获取当前时间。gettimeofday
: 获取精确时间。clock_gettime
: 获取时钟时间。
- 定时器操作:
alarm
: 设置定时器。sleep
: 暂停进程指定时间。nanosleep
: 高精度休眠。
8. 用户和组管理函数
用户和组操作函数定义在 pwd.h
和 grp.h
中。
- 用户管理:
getpwuid
,getpwnam
: 获取用户信息。setuid
,seteuid
: 设置用户ID。
- 组管理:
getgrgid
,getgrnam
: 获取组信息。setgid
,setegid
: 设置组ID。
9. 设备和终端操作
定义在 termios.h
和 sys/ioctl.h
中。
- 终端操作:
tcgetattr
,tcsetattr
: 获取和设置终端属性。cfsetispeed
,cfsetospeed
: 设置终端输入输出波特率。
- 设备控制:
ioctl
: 控制设备行为。
10. 信号量和共享内存
定义在 sys/ipc.h
, sys/sem.h
, sys/shm.h
中。
- 信号量:
semget
: 获取信号量。semop
: 操作信号量。semctl
: 控制信号量。
- 共享内存:
shmget
: 获取共享内存段。shmat
: 附加共享内存。shmdt
: 分离共享内存。
11. 系统信息
定义在 sys/utsname.h
中。
uname
: 获取系统信息(如内核版本、主机名等)。