Linux文件操作(ANSI C)

Linux文件操作

1.文件指针
ANSI文件操作提供了一个文件指针FILE来进行对文件的打开读写和关闭及其他访问;
它的结构体:

typedef struct{
    int level;                     //缓冲区填充的级别
    unsigned flags;                //文件状态标志
    char fd;                       //文件描述符
    unsigned char hold;
    int bsize;                     //缓冲区大小
    unsigned char _FAR *buffer;    //数据传输缓冲区
    unsigned char _FAR *curp;      //当前有效指针
    unsigned istemp;
    short token;                   //供有效性检查使用
}FILE;

2.缓冲
缓冲目的是为了减少外部设备的读写次数,同时使用缓冲能提高应用程序的读写性能
缓冲有三种:全缓冲、行缓冲、不带缓冲。
全缓冲:填满才会操作
行缓冲:遇到换行符就操作;
不带缓冲:直接操作;
设置缓冲的函数:

void setbuf(FILE *fp,char *buf);
int setvbuf(FILE *fp,char *buf,int mode,size_t size);

setbuf()函数可以打开或关闭一个I/O流使用的缓冲。
setvbuf()函数依靠mode参数实现为I/O流设置指定类型的缓冲:
①_IOFBF:全缓冲
②_IOLBF:行缓冲
③_IONBF:不带缓冲

3.打开、关闭文件

FILE *fopen(const char *path,const char *mode);
int fclose(FILE *stream);

mode模式:
r或rb:只读方式,b为二进制
w或wb:只写方式,文件长度置0
a或ab:在文件结尾添加
r+或r+b或rb+:可读可写方式
w+或w+b或wb+:只写方式,文件长度置0
a+或a+b或ab+:在文件结尾读写
当打开文件成功时,fopen()函数会返回一个FILE类型的文件指针,打开失败会返回NULL。
关闭文件时,关闭成功返回0,关闭失败返回EOF。

4.读写文件
①一个字符读写操作
读操作

int getc(FILE *stream);
int fgetc(FILE *stream);
int getchar(void);

写操作

int putc(int c,FILE *stream);
int fputc(int c,FILE *stream);
int putchar(int c);

②一行文件读写操作
读一行操作

char *fgets(char *s,int size,FILE *stream);
char *gets(char)

写一行操作

int fputs(const char *s,FILE *stream);
int puts(const char *s);

③成块数据的文件读写函数

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);

其中nmemb指的是数据块数量,size指的是数据块大小,函数返回值是读写成功后,返回读写数据块的个数。
5.文件流定位

int fseek(FILE *stream,long offset,int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);

其中offset是指位置的偏移,whence有三个值SEEK_CUR表示从当前文件位置计算offset;SEEK_END表示从文件尾开始计算offset;SEEK_SET表示从文件起始计算offset。ftell()函数返回指定文件流当前读写指针的位置,错的返回-1;rewind()函数把指定的文件流读写指针设置到最开始的位置。

If you want to be sucessful,you need to be harder.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值