C语言读取文件

一 前言

                 C语言中操作文件的库函数是io.h,完成对文件的输入,输出,并带有不同的读写模式。由于在读写文件时,对整型,字符一视同仁,所以可以用同一种处理来进行。



二 应用

                以下介绍io.h库函数中比较重要的几个函数

               

 1.打开文件:

                 fopen(char *filePoint): 开启指针p指向的文件,若失败则为NULL

                

 2.关闭函数:

                fclose(char *filePoint):关闭指针p指向的文件,若失败则为NULL

               

 3.读文件

                fgetc(char *filePoint):读取指针p指向的文件数据,如读取到则是具体数据,否则为EOF

                fgets(char *filePoint):读取指针p指向的文件数据,如读取到位内存首地址,str值;失败是NULL,可以feof(),ferror()判断是否到文件尾。

                fscanf: 格式化读取文件中数据

                fread(char  *filePoint):二进制读取文件数据,读取成功则返回实际读取数据块个数,读取失败则返回0,可以feof(),ferror()判断是否到文件尾。

                getw 以二进制形式读取一个整数,读取成功返回整数值,否则返回EOF(-1)。

                

4.写文件

                fputc(char *filePoint):写入指针p指向的文件数据,如读取到则是具体数据,否则为EOF

                fputs(char *filePoint):写入指针p指向的文件数据,如读取到位内存首地址,str值;失败是NULL,可以feof(),ferror()判断是否到文件尾。

             

                fwrite(char  *filePoint):二进制写入文件数据,读取成功则返回实际读取数据块个数,读取失败则返回0,可以feof(),ferror()判断是否到文件尾。

                writew 以二进制形式写入一个整数,读取成功返回整数值,否则返回EOF(-1)。

5.文件状态检查

                     feof(char  *filePoint):判断是否是文件结束位置

                     ferror(char  *filePoint):清除文件错误标志

                     ftell(char  *filePoint):了解文件指针当前位置

6.文件定位函数

                     rewind(char  *filePoint):返回到文件起始数据位置

                     fseek(char  *filePoint):随机定位文件数据位置,获取数据


三 实例

       1.读取文件



#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void main(){
 
  FILE *fp; //判断命令行是否正确s


  char* filename = "E:\js.txt";
   freadFileBychar(filename);
 


 


}


void freadFileBychar(char* filename){


  int ch; //定义文件类型指针
  FILE *fp; //判断命令行是否正确a
  fp = fopen(filename,"r");
 


  if(fp==NULL){
    printf("the file<%s>can not be opened.\n");
    return;//结束程序执行
  }


//成功打开文件
ch = fgetc(fp); //按字符的形式从文件中读取数据
while(ch!= EOF){ //若不为结束符,一直输出
    putchar(ch); //若不是结束符,则将其输入到屏幕中
    ch = fgetc(fp); //继续从fp指针指向文件中读取下一个字符


}//完成fp指向文件的所有数据显示




fclose(fp); //关闭fp指针所致文件
}



        2.写入文件



#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void main(){


  FILE *fp; //定义文件类型指针


  char* filename = "E:\js.txt";
 
  char* a = "i‘吗好地方";  //要写入数据
  fputByChar(filename,a);
}


void fputByChar(char* filename,char* result1){
  int ch;
  FILE *fp;
  char *line = "\n";
  char *combine = (char *)malloc(strlen(result1)+strlen(line));
  fp = fopen(filename,"w");
  if(fp==NULL){
    printf("文件不存在");
  }
  if(combine==NULL){
    exit(1); //退出当前程序
  }
  strcpy(combine,result1);
  strcat(combine,line);


  fputs(combine,fp);
  //关闭文件
  fclose(fp);
}




注: fopen(filename,"w");在开启文件时:要指定文件操作模式,r:读取模式,w:写入模式;a:所有模式,读写,追加。

        3.复制文件

#include "stdlib.h"
#include "string.h"
#include "stdio.h"
#include "io.h"

void main(){

  char* sourceFileName = "E:\\js.txt";  //源文件的路径
  char* desFileName = "E:\\a.txt"; //目标文件的路径
  copyFile(sourceFileName,desFileName);


}


void copyFile(char *sourceFileName,char * desFileName){


  int ch ; //读取的数据:读到则是数据,读不到为EOF
  FILE *in,*out; //定义in 和out两个文件类型指针
  in = fopen(sourceFileName,"r");
  out = fopen(desFileName,"w");
  if(access(sourceFileName,0)){
    printf("文件不存在,无法复制源文件数据到目标文件!");
    return;
  }
  if(in==NULL){
    printf("源文件%s打开失败",sourceFileName);
    return;
  }
  if(access(desFileName,0)){
    system(desFileName);
    printf("创建成功%s",desFileName);
  }else{
     printf("文件已存在");
  }
  if(out == NULL){
    printf("目标文件%s打开失败",desFileName);
    return;
  }
  ch = fgetc(in); //从源文件读取数据:数据不区分字符,整型
  while(ch!=EOF){
    fputc(ch,out); //如不是结束符EOF,则放入目标文件
    ch = fgetc(in); //迭代进行获取
  }


  fclose(out);
  fclose(in);


}




源文件数据:



目标文件数据


四 总结

        总的来说,C语言操作文件比较方便,函数比较清晰,但是在文件的读取,关闭,需要手动操作,库函数的设计,类似Python的模块化编程,不同的是Python的面向对象编程。


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值