1、bzero()函数:将指定字符串s的前n个字节为零。
#include <string.h>
void bzero(void *s, int n);
2、memset()函数:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,直接操作内存空间,常用于内存初始化
# include <string.h>
void *memset(void *s, int c, unsigned long n);
3、atoi()函数:将字符串转换成整型数,返回转换后的整型数,如果 str 不能转换成 int 或者 str 为空字符串,则返回 0
#include <stdlib.h>
int atoi (const char * str);
atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
4、strpbrk()函数:检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,如果有,则返回该字符在str1中的位置的指针。
#include <string.h>
char *strpbrk(const char *str1, const char *str2);
该函数依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置,空字符 null('\0') 不包括在内,若找不到则返回空指针。
5、basename()函数:截取path中的去除目录部分的最后的文件或者路径名。成功时,返回截取path中的去目录部分的最后的文件或路径名指针;失败返回NULL。
#include <libgen.h>
char *basename(char *path);
6、stat()函数:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中。成功返回0,失败返回-1,错误代码存于errno中
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *file_name, struct stat *buf);
errno错误代码:
ENOENT 参数file_name指定的文件不存在
ENOTDIR 路径中的目录存在但却非真正的目录
ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接
EFAULT 参数buf为无效指针,指向无法存在的内存空间
EACCESS 存取文件时被拒绝
ENOMEM 核心内存不足
ENAMETOOLONG 参数file_name的路径名称太长
stat结构体:
struct stat
{
dev_t st_dev; //文件的设备编号
ino_t st_ino; //节点
mode_t st_mode; //文件的类型和存取的权限
nlink_t st_nlink; //连到该文件的硬连接数目,刚建立的文件值为1
uid_t st_uid; //用户ID
gid_t st_gid; //组ID
dev_t st_rdev; //(设备类型)若此文件为设备文件,则为其设备编号
off_t st_size; //文件字节数(文件大小)
unsigned long st_blksize;//块大小(文件系统的I/O 缓冲区大小)
unsigned long st_blocks; //块数
time_t st_atime; //最后一次访问时间
time_t st_mtime; //最后一次修改时间
time_t st_ctime; //最后一次改变时间(指属性)
};
st_mode:文件的类型和存取权限
S_IFMT 0170000 文件类型的位遮罩
S_IFSOCK 0140000 scoket
S_IFLNK 0120000 符号连接
S_IFREG 0100000 一般文件
S_IFBLK 0060000 区块装置
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符装置
S_IFIFO 0010000 先进先出
S_ISUID 04000 文件的(set user-id on execution)位
S_ISGID 02000 文件的(set group-id on execution)位
S_ISVTX 01000 文件的sticky位
S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限
S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限
S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限
S_IRGRP 00040 用户组具可读取权限
S_IWGRP 00020 用户组具可写入权限
S_IXGRP 00010 用户组具可执行权限
S_IROTH 00004 其他用户具可读取权限
S_IWOTH 00002 其他用户具可写入权限
S_IXOTH 00001 其他用户具可执行权限
7、fstat()函数:由文件描述符获取文件状态,将参数filedes 所指向的文件状态复制到参数buf 所指向的结构体(struct stat)中
#include <sys/stat.h>
#include <unistd.h>
int stat(int fd, struct stat *buf);
fstat()与stat()作用完全相同,不同之处在于传入的参数为已打开的文件描述符。
8、open()函数:建立一个文件描述符,其他的函数可以通过文件描述符对指定文件进行读写操作。
#include <sys/types.h>
#incldue <sys/stat.h>
int open(const char*pathname, int flags);
int open(const char*pathname, int flags, mode_t mode);
mode:
O_RDONLY: 只读打开
O_WRONLY: 只写打开
O_RDWR: 读,写打开
O_CREAT: 若文件不存在,则创建它,需要使用mode选项。来指明新文件的访问权限
O_APPEND: 追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容
9、close()函数:关闭一个已经打开的文件
#include <unistd.h>
int close(int fd);
10、umask()函数:改变文件权限,常与open()函数结合使用
#include <sys/types.h>
#include <sys/stat.h>
mode_t umask(mode_t mask);
umask()函数会将系统umask值设成参数mask&0777后的值,然后将先前的umask值返回。在使用open()建立新文件时,该参数mode并非真正建立文件的权限,而是(mode& ~umask)的权限值。
11、exit()函数:终止进程
#include <stdlib.h>
void exit(int status);
exit(1); /*异常退出,不为0都表示异常退出*/
exit(0); /*正常退出*/