文件操作之系统调用

一、Linux文件描述符

一个进程启动,都会打开三个文件:

1、STDIN_FILENO    - 0

2、STDOUT_FILLENO   -1

3、STDERR_FILENO   -2


二、不带缓存的I/O操作(iint fd)

1、fd = int open(const char * pathname,int flags)

flags:

O_RDONLY    只读方式打开

O_WRONLY  只写方式打开

O_RDWR  读写方式打开

O_CREAT  若文件不存在则自动创建文件

O_CREATE | O_EXCL  检查文件是否存在,不存在则创建,存在则报错。

O_TRUNC 将文件清空打开


2、close(int fd)             fd -- 文件描述符


3、read(int fd,void * buf, size_t count)

将文件中count字节大小的内容读取到缓冲区buf中,成功返回实际读到的字节数,失败返回-1。


4、write(int fd,void * buf,size_t count)

将缓冲区中的内容count 个字节写入到文件中,成功返回实际写入的字节数,失败返回-1。


5、lseek(int fd,offset_t offset,int where)

用于移动文件的读写位置。将文件的读写位置相对于where移动offset个字节。

where:

SEEK_SET:相对文件开头

SEEK_CUR:相对文件读写指针当前的位置

SEEK_END:相对文件尾部


三、带缓存的I/O操作(FILE * fd)

1、fd = fopen(const char * pathname,const char * mode)

mode:

r:只读方式 文件必须存在

w:只写,文件不存在则自动创建,且文件清空

r+:允许读写,文件必须存在

w+:允许读写,不存在则创建


2、fclose(FILE *  fd)


3、fread(void * buffer,size_t size,size_t n,FILE * fd)

将文件中的内容读取n个大小为size的数据到buffer,成功返回实际读的字段数,失败返回-1。


4、fwrite(void * buffer,size_t size,size_t n,FILE * fd)

将buffer中n个字段size大小的数据写入到文件中,成功返回实际写的字段数,失败返回-1。


5、fseek(FILE * fd,long offset,int where)

同上 lseek()


6、fgetc(FILE * fd)

从文件中一个字符一个字符的读取。


7、fputc(int c,FILE * fd)

向文件中写入一个字符。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值