C语言-文件操作
一 ASCII(文本)文件、二进制文件:文本文件每个字符为一个字节,占用空间大,速度慢(需要由二进制文件转换),优点在于便于对字符的操作;二进制文件多用于即需要输入到内存又要暂存在外存上。C语言将文件看做是字符流或二进制流数据(字符/字节)的集合。
二缓冲/非缓冲文件:在unix中,缓冲文件(高级I/o)文件用于处理文本,非缓冲文件用于二进制文件。C语言对文本和二进制文件都采用缓冲文件,即用户数据和磁盘数据之间都是通过内存缓冲文件来进行的,因而对文件操作后必须用fclose(*p)关闭文件:将缓冲区的数据送到磁盘后关闭文件,释放文件指针,防止对文件的误操作。
三文件指针:是在stdio.h定义的结构体变量,因缓冲文件的特性而在内存中开辟一个区间来存放关于文件的有关信息。
四 3个标准文件:系统运行自动打开stdin stdout stderr三个标准文件
五:fputc putc putchar的关系(同理fgetc getchar getc):
fputc( char,fp)将字符写到磁盘;putchar是用宏定义且输出为标准输出终端(显示器)的特殊fputc:#define putchar(char) fputc(char,stdout) 其中stdout是系统定义的文件指针变量,与输出中相连(系统将所有的终端都看做是指针);putc是fputc的简化写法:#define putc(char,fp) fputc( char,fp).
六 :文件结束标志与顺序读取:EOF与feof(fp):
文件文件常用EOF=-1代替文件结束,但二进制文件中的-1无法区分究竟是文件结束标志还是真正的有效数据-1,所有用feof(fp)=1来表示二进制文件的结束。当然feof(fp)也使用于文件文件,但最好用操作类型(是否带b)加以区分。
6.1顺序读取文本文件: 6.2 顺序读取二进制文件:
{char=fgetc(fp); while(!foef(fp))
while(EOF!=char) { char=fgetc(fp)
{ ......
putchar=char; }
char=fgetc(fp);
}
7相关函数:
7.1 文件打开:fopen("filename",操作方式)
7.2 文件关闭:fclose(fp)
7.3 文件定位:rewind(fp)//定位到文件开头
fseek(fp,offset偏移量,source源位置)//实现随机文件定位输出。source={0=开头,1=当前,2=结尾}
ftell(fp) //返回当前文件指针的位置,-1L表示处处(加L表示常整形)
7.4 文件读写:fputc(char,fp)putchar() putc() fputs() putw()操作一个字
fgetc(char,fp)getchar() getc() fgets() getw()
fread(*buff,size,cout,fp)/fwrite(*buff,size,cout,fp) //数据块操作
fscanf(格式控制符,输入列表)/fprintf(格式控制符,输出列表)//从磁盘输入 向磁盘输出
7.5 文件状态: feof(fp)=1表示文件正常结束
ferr(fp) =0 表示文件没有出错
clearerr() //给feof和ferr清0