Linux高级文件编程 标准C部分笔记

来源:互联网 发布:软件下载吧 编辑:程序博客网 时间:2024/05/21 19:58

AP I/O 笔记

文件

二进制文件 :

文本文件   :

.

.

.

文件的高级操作(stdio.h)

主要是一些 标准C里面的 IO, 里面封装的是一些 LIUNX 的底层文件操作。

高级文件结构体:

typedef struct

{

int _fd; // 文件号

int _cleft; // 缓冲区中剩下的字符数

int _mode; // 文件操作方式

char *_next; // 文件当前读写位置

char *_buff; // 文件缓冲区位置

}FILE;

指针变量说明: FILE *fp;

用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这  个指针获得文件信息,访问文件

l  

      文件关闭后,它的文件结构体被释放

标准 C 函数部分

打开文件fopen :

函数名 fopen
功  能: 打开一个流
用  法 FILE *fopen(char *filename, char *type); 

返 值: 正常打开,为指向文件结构体的指针; 打开失败,为 NULL; 

char *type                                         

                

"r" / "rb"  只读    "r"+ / "rb+"读写 

"w" / "wb" 只写"w" / "wb"读写

"a" / "ab"  追加"a" / "ab"读写追加

eg:

打开文件fdopen :

函数名 fdopen
功  能: 将一已打开的文件描述符关联到文件流
用  法 FILE * fdopen(int FD, const char * MODE); 

返 值: 成功返回文件指针,失败返回NULL; 

eg:

关闭文件fclose :

函数名 fclose 
功  能: 关闭一个流
用  法 int  fclose(FILE *stream); 

返 值: 正常关闭为0; 出错时,0; 

eg:

字符I/O:fputc fgetc 

函数名 fputc 
功  能: 把一字节代码c写入fp指向的文件中
用  法 int  fputc(int ch, FILE *stream); 

返 值: 正常,返回c; 出错,为EOF

eg:

函数名 fgetc 
功  能:fp指向的文件中读取一字节代码
用  法 int  fputc(int ch, FILE *stream); 

返 值: 正常,返回读到的代码值;读到文件尾或出错,为EOF

eg:

字符串I/Ofgets fputs

函数名 fgets 
功  能:fp指向的文件中读取一个字符串
用  法 char*  fgets(char *string, int n, FILE *stream);

返 值: fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULL

fgets  fp 所指文件读n-1个字符送入string 指向的内存区,

并在最后加一个‘\0’

(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)

eg:

函数名 fputs 
功  能:fp指向的文件中写入一个字符串
用  法 int  fputs(char *string, FILE *stream);

返 值: fputs正常时返回写入的最后一个字符;出错为EOF

eg:

数据块I/Ofread fwrite

函数名 fread 
功  能: 从一个流FILE *fp中读数据 到 *buffer
用  法 size_t  fread(void *buffer, size_t size, size_t nitems, FILE *fp);

返 值: 成功,返回读的块数;出错或文件尾,返回0;

函数名 fwrite 
功  能: 从一个流FILE *fp中读数据 到 *buffer
用  法 size_t  fwrite(void *buffer,size_t size, size_t count,FILE *fp);

返 值: 成功,返回写的块数;出错或文件尾,返回0;

说明:

typedef unsigned size_t;

buffer: 指向要输入/输出数据块的首地址的指针

size: 每个要读/写的数据块的大小(字节数)

nitems要读/写的数据块的个数

fp: 要读/写的文件指针

freadfwrite 一般用于二进制文件的输入/输出

格式化I/Ofprintf  fscanf

函数名 fprintf
功  能: 按格式对文件进行I/O操作
用  法 int fprintf(FILE *fp,const char *format[,argument,…]);

返 值: 成功,返回I/O的个数;出错或文件尾,返回EOF;

函数名 fscanf 
功  能: 按格式对文件进行I/O操作
用  法 int fscanf(FILE *fp,const char *format[,address,]);

返 值: 成功,返回I/O的个数;出错或文件尾,返回EOF;

几个概念

a.文件位置指针-----指向当前读写位置的指针

b.读写方式

l 顺序读写:位置指针按字节位置顺序移动,叫~

l 随机读写:位置指针按需要移动到任意位置,叫~

文件位置:rewind  ftell  fseek

函数名 rewind
功  能: 重置文件位置指针到文件开头
用  法 void rewind(FILE *fp);

返 值:;

eg:

函数名 ftell
功  能: 返回位置指针当前位置(用相对文件开头的位移量表示)
用  法 long ftell(FILE *fp);

返 值: 成功,返回当前位置指针位置;失败,返回-1L;

eg:

函数名 fseek
功  能: 改变文件位置指针的位置
用  法 int fseek(FILE *fp,long offset,int whence);

返 值: 成功,返回0;失败,返回非0;

eg:

文件errorferror  clearerr

函数名 ferror
功  能: 测试文件是否出现错误
用  法 int ferror(FILE *fp);

返 值: 未出错,0;出错,非0;

说  明: 每次调用文件输入输出函数,均产生一个新的ferror函数

        值,所以应及时测试

l      fopen打开文件时,ferror函数初值自动置为0

    clearerr函数

函数名 clearerr
功  能: 使文件错误标志置为0
用  法 void clearerr(FILE *fp);

返 值:;

说  明: 出错后,错误标志一直保留,直到对同一文件调

clearerr(fp)rewind或任何其它一个输入输出函数

出错的检测

原创粉丝点击