首先我们为什么要学习文件操作呢?嗯哼?为了解决什么问题呢?

这是因为啊C语言本身没有输入输出的功能,一般都是调用库函数完成的。

比如大家对scanf()函数和printf()函数相当的熟悉,scanf()函数处理的输入数据来自键盘,printf()函数输出的数据流向显示器。

用C语言的行话来说,这两个函数处理的数据从stdin流入和stdout流出,stdin的数据一般是从键盘流入,stdout一般是流向显示器的。

但是键盘并不适合大数据的输入,此时我们便需要借助文件,文件具有保存数据的能力,大量数据的输入以及数据的持久保存一般是借助文件完成的。

这下应该明白了吧,比如有一个千万级的数据,大家总不能键盘一个一个输入吧,这要到猴年马月对不对。

接下来再问大家一个问题,把大象装入冰箱需要几步呢?

第一步,打开冰箱门,第二步把大象塞进去,第三步关闭冰箱门。太棒了,呜呜呜

文件操作也是如此,首先我们需要打开一个文件。打开一个文件的前提是需要准备一个文件。

在项目路径下准备一个txt文件,记得把文件的字符集设置成ANSI。

所谓打开,在计算机里面一般是指打开内存与外存或其他设备之间的联系通道,好进行数据交换。

在C里面对文件进行读写的操作的指针的类型是FILE* 。每当我们要进行文件操作的时候都要定义这样的一个指针。让我们看看这个类型的定义。是一个结构体,里面的参数以后有机会讲。

typedef struct _iobuf
{char*  _ptr;int    _cnt;char*  _base;int   _flag;int   _file;int   _charbuf;int    _bufsiz;char*   _tmpfname;
} FILE

然后我们就可以打开文件,打开文件需要一个函数,fopen()。

_CRTIMP FILE* __cdecl __MINGW_NOTHROW fopen (const char*, const char*);

有两个参数,第一个参数是将要操作的文件的名称,第二个参数是打开模式,一般有 r w a,r表示读,w表示写,a表示可读可写。

它还有返回值,如果文件打开失败,就会返回NULL。所以一般我们在打开文件的时候都要进行判定。

 //第一步打开文件FILE* file = fopen("test.txt", "r");//进行判定if (file == NULL){printf("打开文件失败!!!");return 0;}

如果打开文件成功,我们就可以进行文件内容的读取了。

可以使用fgetc()函数,或者fgets()函数,大家应该知道这两者的区别,一个是一个一个读,一个是一行一行读。这两个函数还有个特点就是用过以后,会自动把指针往后移,不用手动移动了。

接下来我们可以试试。但是,由于char是一个字节,而中文一般是两个字节,所以我们输出中文的话需要输出两个字节,像这样。

 char ch,ch1;ch = fgetc(file);ch1 = fgetc(file);printf("%c%c", ch, ch1 );

这就读到了第一个字符,我们多读几个看看。

 char ch,ch1;ch = fgetc(file);ch1 = fgetc(file);printf("%c%c", ch, ch1 );ch = fgetc(file);ch1 = fgetc(file);printf("%c%c", ch, ch1);ch = fgetc(file);ch1 = fgetc(file);printf("%c%c", ch, ch1);

非常的成功,但是这样写,特别的麻烦的说,所以我们可以选择循环读取,而且文件的结束都有一个EOF,可以通过这个判断有没有读完文件。

 char ch,ch1;while (EOF != (ch=fgetc(file))){printf("%c", ch);}

让我们看看读取的结果

非常的perfect。完美

接下来让我们再看看另一个函数fgets();按行读取

有返回值,可以用来进行判断,第一个参数是数据要保存的位置,第二个读取的最大字节数,第三个指向文件的指针。上代码。

 char sentence[200] = {0};if(fgets(sentence,200,file) != NULL)printf("%s", sentence);

那么fgets()能不能连续读取呢?让我们试试。

 while(fgets(sentence,200,file) != NULL)printf("%s", sentence);

毫无意外的成功了呢。

最后不要忘记第三步哦,关闭文件。

 //第三步关闭文件fclose(file);

结束。

下面是完整的代码:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{//第一步打开文件FILE* file = fopen("test.txt", "r");//进行判定if (file == NULL){printf("打开文件失败!!!");return 0;}//ch = fgetc(file);//ch1 = fgetc(file);//printf("%c%c", ch, ch1 );//ch = fgetc(file);//ch1 = fgetc(file);//printf("%c%c", ch, ch1);//ch = fgetc(file);//ch1 = fgetc(file);//printf("%c%c", ch, ch1);//char ch,ch1;//while (EOF != (ch=fgetc(file)))//{//    printf("%c", ch);//}char sentence[200] = {0};if (fgets(sentence, 200, file) != NULL)printf("%s", sentence);//while(fgets(sentence,200,file) != NULL)//   printf("%s", sentence);//while (1)//{//}//第三步关闭文件fclose(file);return 0;}

还有fread()函数。

四个参数昂,第一个存储位置,第二个字节大小,第三个读取的最大数量,第四个指向文件的指针。

 FILE* file = fopen("test.txt", "r");//进行判定if (file == NULL){printf("打开文件失败!!!");return 0;}char sz[200] = {0};fread(sz,2,100,file);printf("%s", sz);//第三步关闭文件fclose(file);

今天就先讲到文件的读取,等明天进行文件的写入哦。

C语言的文件读取------C语言相关推荐

  1. C语言的文件读取与写入操作

    学了一年的C语言了,现在回过头来做一下总结.并且博客开了挺长一段时间却没有谢什么实际的东西.现在做下总结,对之后的学习帮助应该挺大的.与大家共勉! 现在,我先来介绍一下C语言的文件读取与写入的原理和具 ...

  2. 西北乱跑娃 --- 易语言大文件读取

    为了读取大文件翻遍了很多网站,都说要使用打开文件属性,让人难以抓住问题解决的核心,值得吐槽的就是易语言收费的特质,去哪里下载以及解决问题都是跌跌斑斑.确实很让人费神,现在把大文件读取写到这里. 一.定 ...

  3. 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )

    文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...

  4. c语言创建文件存放,C语言文件操作

    C语言文件操作 常见硬件设备所对应的文件 文件 硬件设备 stdin 标准输入文件,一般指键盘:scanf().getchar() 等函数默认从 stdin 获取输入. stdout 标准输出文件,一 ...

  5. 怎么用c语言打开文件6,c语言中用什么来打开文件

    printf("%6d", aa[i][j]); printf ("\n"); } y = fun (aa); printf("\nThe sum: ...

  6. python语言源程序文件类型_Python语言源程序文件的文件类型是__________。

    [单选题]Do you know Li Ming? No, I don't know _____. [填空题]从同步.异步方式的角度讲,82C55的基本输入/输出方式属于 通讯 . [判断题]扩展I/ ...

  7. c语言数据文件是,C语言数据文件操作.ppt

    C语言数据文件操作 第十一章 文件 11.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区 ...

  8. c语言H文件意思,C语言中 *.c和*.h文件的区别!

    这是HR面试我的一道题,没技术上含量,不过细想起来,还是C语言的最基本的知识!俗话说,目标决定动力,细节决定成败! C文件就是C语言系列的源文件,而H文件则是C语言的头文件,即C系列中存放函数和全局变 ...

  9. 手机c语言多文件编程,C语言多文件编程

    今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...

  10. c语言源程序文件有,C语言源程序文件的后缀是什么?

    什么是源程序?什么是源文件?源程序是一种计算机的代码.它会符合一定的语法,经过编译器编译或解释后生成具有一定功能的可执行文件或组件,也可以是某种接口.是用程序设计语言编写的程序. 源文件就是用汇编语言 ...

最新文章

  1. linux g++ gcc编译c++哪个好,linux g++编译c++
  2. Mysql雨松工具类使用
  3. 分布式服务下的关键技术(转)
  4. 内部类 java 1614957119
  5. 安装SQLSERVER2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作...
  6. ZeroMQ(java)之负载均衡
  7. 荣耀10 原版android,荣耀V10新内置壁纸
  8. Android TV 开发 (1)
  9. codekit for mac(开发人员必备编译工具)
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_5_综合案例_文件上传案例优化...
  11. linux 程序员字体下载,编程字体Monaco字体 For Linux版
  12. unicode字符集和utf-8编码
  13. 省级期刊发表价格具体分析
  14. 【Codecs系列】CABAC熵编码详解
  15. FME抓取遥感影像瓦片地图服务
  16. 深度强化学习训练调参方法
  17. ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(3)
  18. 输出图案(四)----输出正多边形图案:(难度系数:半颗星)
  19. (亲测解决)Tomcat启动时卡在“ Deploying web application directory ”很久的解决方法
  20. 初学SNMP,在spring boot 下使用snmp4j 做本地测试调通的记录

热门文章

  1. MESHLAB安装教程
  2. android ssh软件,优秀的 Android SSH 工具推荐
  3. 在iPad上连接虚拟机中的ubuntu系统 - 使用frp内网穿透实现在外办公
  4. python汉字拼音首字母,python获取一组汉字拼音首字母的方法
  5. 核心网upf作用_【5G核心网】5GC核心网之网元UPF
  6. 计算机二级九月试题office,9月计算机二级office题库及答案
  7. 量子电动力学和量子场论,多体系统的量子场论
  8. 量子场论考试必会题目
  9. 计算机二进制教案教程,计算机的二进制教案.doc
  10. 【数据挖掘】基于SPSS Modeler实现商业银行信用卡贷款风险识别