C语言文件操作

一. C语言文件存取方式(输入,输出方式):

  • 顺序存取
  • 直接存取

二. C语言数据的两种存放方式:

  • 文本文件
  • 二进制文件

三. 定义文件类型指针变量一般形式:

	FILE *指针变量名   例:FILE *fp;

四. 最常用的文件使用方式及其含义:

	1)"r".为读而打开文本文件.(不存在则出错)
	
	2)"rb".为读而打开二进制文件.
	
	3)"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)
	
	4)"wb".为写而打开二进制文件.
	
	5)"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)
	
	6)"ab".为在文件后面添加数据而打开一个二进制文件.
	
	7)"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)
	
	8)"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
	
	9)"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)
	
	10)"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
	
	11)"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.
	
	12)"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.

五.文件操作函数(常用):

  1. 打开文件:

    fopen(文件名,文件使用方式);
    此函数返回一个指向FILE类型的指针,调用成功返回指针,
    否则返回NULL,一般使用要进行测试是否==NULL.
    例:FILE *fp;
    	fp = fopen("file","r");
    
  2. 关闭文件:

    fclose(文件指针);
    成功关闭,fclose返回0,否则返回EOF(-1);
    (如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。)
    例:FILE *fp; int a;
    	a = fopen(fp);
    
  3. 输入输出函数:

    1)输出一个字符:   
    	putc(ch,fp);或fputc(ch,fp); 
    	输出成功返回 ch 字符,否则返回EOF(-1);
    2)输入一个字符:
    	ch = getc(fp);或fgetc(fp);
    	从pf指定的文件中读取一个字符并返回;
    
  4. 判断文件结束函数:

    feof(fp);
    如果文件结束,则返回非0值,否则返回0
    
  5. 格式输入函数:

    fscanf(文件指针,格式控制符串,输入项表);
    和scanf函数相似,不同点在于它输入的对象是磁盘上文本文件中的数据
    例如:fscanf(fp,"%d%d",&a,&b); == scanf("%d%d",&a,&b);
    
  6. 格式输出函数:

    fprintf(文件指针,格式控制符串,输入项表);
    和printf函数相似,不同点在于它将输出的内容按格式存放到磁盘的文本文件中
    例如:fprintf(fp,"%d %d",x,y); == printf("%d %d",x,y);
    
  7. 字符串读取函数(读取文件返回字符串):

    fgets(str,n,fp);
    从fp所指文件中读入n-1个字符放入str为起始地址的空间内,如果在未读满n-1个字符时,
    则遇到换行符或一个EOF结束本次读操作,并将str作为函数值返回.
    
  8. 字符串输出函数(输出字符串到文件):

    fputs(str,fp);
    功能:把str字符串读入到fp所指的文件中。函数返回一个非负值,如果发生错误则返回 EOF(-1)。
    
  9. 对象输入函数(写入文件):

    size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
    功能:把ptr所指向的数组中的数据写入到给定流stream中。
    参数:ptr:指向要被写入的元素数组的指针。
    	  size:要被写入的每个元素的大小,以字节为单位。
    返回:nmemb:元素的个数,每个元素的大小为 size 字节。
    	  stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
    
  10. 对象读取函数(读取文件):

    size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream );
    功能:从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用size次fgetc),
    把buffer当作unsigned char数组并顺序保存结果。流的文件位置指示器前进读取的字节数。
    参数:buffer:指向要读取的数组中首个对象的指针
         size: 每个对象的大小(单位是字节)
         count: 要读取的对象个数
         stream: 输入流
    
  11. 文件定位函数

       pf:  文件指针
       offset:  以字节为单位的位移量,为长整形.
       origin:  是起始点,用来指定位移量是以哪个位置为基准的.
    

    1) fsee(pf,offset,origin);
    功能:移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始。
    SEEK_SET 0 文件开始
    SEEK_END 2 文件末尾
    SEEK_CUR 1 文件当前位置

    2) ftell(pf);
    功能:获得文件当前位置指针的位置,给出当前位置指针相对于文件开头的字节数。
    出错时,函数返回-1L
    例:测文件长度 long t;
    fseek(fp,0L,SEEK_END);
    t=ftell(fp);

    3)rewind(pf);
    无返回值,使文件的位置指针回到文件开头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值