文件操作

1.文件有二进制模式和字符模式。(不同系统有对换行符的修正 “ ”会被替换为 “ ”,“ ”换为 等等 这个很乱 ,二进制没有这种情况)

  1 #include <stdio.h>
  2 #include <stdlib.h>//提供 exit()的原型
  3 int main(int argc,char *argv[])
  4 {
  5 	int ch;//读取文件,储存每个字符的地方
  6 	FILE *fp;//文件指针
  7 	unsigned long count = 0;
  8 	if(argc!=2)
  9 	{
 10 		printf();
 11 	}
 12 }//argc 代表命令行 argv[0]程序的名称 argv[1]输入文件名字,要打开文件的名字

2.fopen()

模式字符串

含义

“r”

以读的模式打开

“w”

以写的模式打开,把现有文件清空,不存在的话,新创建一个

“a”

在现有文件末端添加,不存在新建一个

“r+”

更新模式打开(可以读写)

“w+”

更新模式 清空原有数据

“a+”

更新模式 文件末尾添加 ,可以全读

“rb”/“wb”/“ab”/“rb+” ….

二进制模式操作

“wx”/”wbx”/”w+x”/”wb+x”或者“w+bx”

(c11)文件独占模式


FLIE * fp;

fp = fopen(“wacky.txt”,”r”);

ch=getc(fp);//获取单文件字节

while(ch!=EOF)//文件结束符

3.fclose()//函数 正常关闭 会返回0

4.

fgets(buf,STLEN,fp) //读到第一个换行符 或文件结尾或 STLEN-1个字符,末尾添加一个‘’,结束符返回null

fput(buf,fp);//写入待写入文件,不会添加换行符

5.随机访问

fseek(fp,0L,SEEK_END); //用于定位文件位置 第一个参数 FILE指针,第二个参数偏移量 offset,第三个用于确定从哪里开始

ftell() 返回long,当前位置距离开始的距离

  1 fseek(fp,0L,SEEK_SET);//定位至文件开始处
  2 fseek(fp,10L,SEEK_SET);//定位至文件开始处的第10个字节
  3 fseek(fp,2L,SEEK_CUR);//当前位置 前进两个字节
  4 fseek(fp,0L,SEEK_END);//定位置文件结尾
  5 fseek(fp,-10L,SEEK_END);//定位置文件结尾回退10字节


模式

偏移量的起始点

SEEK_SET

文件开始处

SEEK_CUR

当前位置

SEEK_END

文件末尾

注意:兼容性 不同系统很难做到兼容

以上两个函数都是long参数,fgetpos 和 fsetpos() 他们使用了新类型 fpos_t

int fgetpos(FILE * restrict stream,fpos_t * restrict pos)//pos描述 当前位置距离开始的位置

int fsetpos(FILE * stream,const fpos_t *pos);


原文地址:https://www.cnblogs.com/polar-lights/p/8457088.html