《unix环境高级编程》 有关I/O库函数--3

来源:互联网 发布:我国历年gdp数据 编辑:程序博客网 时间:2024/05/21 06:45

文件I/O函数:他们是针对文件描述符的,无用户级缓冲  int filedes

1--open函数

Int open(const char *pathname,int flag,…/* mode_t mode */);  

//pathname要打开或者创建的文件的名字,mode只有在创建文件的时候会用到,

该函数的目的是产生一个filedes,对文件操作就是用这个整型数字,文件描述符标志。

2--create函数

Int create(const char *pathname,mode_t mode);

//这个函数实际上和open函数有些重复,之前open函数没有创建文件的功能,所以有这个函数存在

3--close函数

Int close(int filedes);  //filedes表示打开的文件标识符,该函数目的就是关闭一个打开的文件,不能重复关闭多次

4--lseek函数

Off_t lseek(int filedes,off_t offset,intwhence);   //offset表示偏移量,whence表示偏移其实位置

5--read函数

Int read(int filedes,void * buf,size_tnbytes);//成功时候返回值是读到的字节数

6--write函数

Int write(int filedes,const void *buf,size_t nbytes);//成功返回写入的字节数

标准I/O库:他们针对的是流  FILE *fp,有缓冲

1--- setbuf函数  缓冲

void setbuf(FILE *fp,char *buf)   //该函数的功能是打开或者关闭缓冲

          int   setvbuf(FILE * fp,char *buf,int mode ,size_tsize) //精确指定所需缓冲区的类型

2--fopen函数  打开流

FILE *fopen(char* pathname,char *type)  //与之类似的还有函数freopen和fdopen这两个函数使用不多,不解释

这里重点介绍一下type标志,他的作用是指定打开流的读写方式。

其实下面这个有规律可寻:

r表示只读[该文件必须要存在],w表示重写[文件如果存在清空重写,不存在则创建],a表示追加写[文件如果不存在则创建] b表示二进制  +表示可读可写

r或 rb     

 为读而打开,b的意思是二进制文件

w或wb   

 为写而打开

a或ab     

 添加,为在文件结尾写而打开或为写而创建

r+或r+brb+ 

为读和写而打开 +表示读和写

w+或w+bwb+

把文件截短至0长,或为读和写而打开

a+或a+bab+  

为在文件结尾读和写二打开或创建

   这里还有补充一个fclose()关闭一个流 fclose(FILE *fp)

3--读和写流

读写流按照分类:

每次一个字符的I/O:

int getc(FILE *fp);  int fgetc(FILE *fp);     int getchar(void);//从stdin获取输入   //前两个函数之间的区别是getc()可以实现宏,我们不来考虑,可以看做等效

Int putc(int c ,FILE *fp);  int fputc(int c,FILE *fp);  int putchar(intc);//输出到stdout

每次一行的I/O:    

char *fgets(char *buf,int n ,FILE*fp);  char *gets(char *buf);  //将FILE *fp里面的一行内容送到缓冲区buf里面,gets默认是取stdout的一行内容

char *fputs(char *buf,int n ,FILE*fp);  char *puts(char *buf);   //和上面类似,将以null结尾的buf送到指定的流fp/stdout里面

直接I/O:[一次性读取一个机构体  或者读取的文件中间有NULL(二进制文件),这个函数都可以进行处理]

size_t fread(void *ptr,size_t size ,size_t nobj,FILE *fp);

size_t fwrite(void *ptr,size_t size ,size_t nobj,FILE *fp);

4--定位流

long ftell(FILE *fp);

Int fseek(FILE *fp,long offset,int whence);

0 0
原创粉丝点击