1. 修改所有者
<sys/types.h>
<unistd.h>
int chown(constchar* pathname,uid_t owner,gid_t group)
int fchown(intfd,uid_t owner,gid_t group)
成功返回0;失败-1,并设置errno的值。fd为文件描述符
2. 文件的访问权限
<sys/types.h>
<sys/stat.h>
int chmod(const char* pathname,mode_t mode)
int fchmod(int fd,mode_t mode)
成功返回0;失败-1,并设置errno的值。fd为文件描述符
3. 修改文件位置或者名称
<stdio.h>
Int rename(const char* oldpath.const char* newpath)
成功返回0;失败-1,并设置errno的值。fd为文件描述符
4. 修改文件长度
Unistd.h
Syst/types.h
Int truncate(const char *path,off_t length);
Int ftruncate(int fd,off_t length)//必须以写的方式打开
根据length的大小裁短,或者填’\0’增长
5. 获取文件信息
Sys/types.h
Sys/stat.h
Unistd.h
Int stat(const char* path,struct stat *buff)
Int fstat(int fd,struct stat *buff);
Int lstat(const char *path,struct stat *buff);
6 同步,将缓冲区数据写入硬盘
Unistd.h
Int fsync(int fd);
7 锁定、解锁文件
Sys/file.h
Int flock(intfd,int operation)
Operation: LOCK_SH :共享锁 LOCK_EX:排它锁 LOCK_UN :非阻塞 LOCK_NB (与LOCK_SH或者LOCK_EX 做 | 运算一起用)
8 a)获取当前工作目录
Unstd.h
Char *getcwd(char* pathbuf,size_t size)成功返回目录字符指针,失败返回NULL,并设置errno
b) 修改当前工作目录
unistd.h
int chdir(const char* path)
int fchdir(int fd)
9 创建删除目录
sys/stat.h
Sys/types.h
Int mkdir(const char *pathname,mode_tmode)
Int rmdir(const char *pathname)
10 打开关闭读取目录文件
Sys/types.h
Dirent.h
DIR *opendir(const char *name)
int close(DIR *dir)
struct dirent *readdir(DIR *dir)
11. char *fgets(char *des,int size,FILE *stream) 遇到‘\n’,就添加’\0’结束,若没有遇到’\n’而超过size长度则添加’\0’到des末端结束
所以des最末端的‘\0’不知道stream中本来就有的还是fgets自动添加的
12. int fseek(FILE*stream ,long offset,int whence) 移动指针,一般用于二进制文件,在文本文件中计算的位置往往会出错;ofset是long型(如 200L)
ftell(FILE *stream) 返回当前位置;rewind(FILE *stream)回到开始
13.fread、fwrite主要是针对二进制文件,但是要可用于文本文件
fprintf,fscanf 主要用于文本文件输入输出格式化,以空格、回车作为结束标志,也不检查buf大小,所以很少用这两个函数
while(fscanf(fp,"%s",buf)!=EOF)
{
printf ……
}
实际操作文本文件用fgets,fputs更多。fgets返回EOF表示结束
sprintf、sscanf ,snprintf:格式化字符串