文件操作

68 篇文章 0 订阅

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) 移动指针,一般用于二进制文件,在文本文件中计算的位置往往会出错;ofsetlong(如 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:格式化字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值