温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言或C++怎样从文本文件中读取和保存数据

发布时间:2021-08-26 16:31:26 来源:亿速云 阅读:301 作者:chen 栏目:编程语言

这篇文章主要介绍“C语言或C++怎样从文本文件中读取和保存数据”,在日常操作中,相信很多人在C语言或C++怎样从文本文件中读取和保存数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言或C++怎样从文本文件中读取和保存数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在C程序中:

  ——文件流:C标准库提供了FILE(之所以命名为FILE,因为linux将所有机制都视为文件),FILE对象是一个包含了管理流所需的所有信息的结构,包括缓冲区信息、各种标记(如文件结束标记和错误标记)以及用于实际I/O的文件描述符等。

  ——输入流,输入流:数据从文件传送到内存的叫输入流,数据从内存传送到文件的叫输入流。——打开文件:FILE对象通过调用fopen函数创建的。如:FILE*fp,fp=fopen("filename","r"),表示以只读的方式建立与filename相关的文件流;filename为当前目录下的相对路径名,r代表可读(打开文件的模式)。

读取

  对一些有规范格式文件的读取,可使用标准库stdio.h下的fscanf函数

  函数原型为:intfscanf(FILE*stream,constchar*format,[argument...])

  如读取文件data.txt(数据格式相对规范)

  代码实现读取:

  复制代码

  //test.c

  //文件读取

  #include

  intmain()

  {

  //1:创建文件流,文件指针名=fopen(文件名,使用文件方式)打开失败则返回NULL;

  FILE*fp=fopen("./data.txt","r");//以data.txt文件为例

  //2:检测文件是否打开成功;

  if(!fp){

  printf("打开失败!\n");

  return-1;//返回异常

  }

  //3:

  intnum;//用来储存一个整型数据

  charname[10],place[10];//用来储存两个字符串数据

  //抽象理解:

  //理解文件位置含义:其表示已打开文件当前可读写字符的位置,其表示为一个到文件头的整数;

  //fscanf在读取数据时可以这样理解:文件被打开后,它就成了一个无序字节流(水流),其会通过一个管道,流向被读取的一端;

  //了解fscanf后知道,其遇到空格字符(空格,制表符),换行符,就会停止,这里的停止我们可以理解为:

  //停下来为文件中两个不相关的数据块做一个分隔的操作,刚好适应了我们一般将空字符(包括换行符)作为两个数据之间的分隔的行为;

  //我们只需理解管道的两端

  //流进管道的一端的位置,就是文件的位置,表示已被读到的位置。

  //流出管道一端,就是进程用来读取数据的一端,其可以对管道中已经做区分的数据进行读取。

  //4:读取:

  fscanf(fp,"%d%s%s",&num,name,place);//fscanf对流的格式化读取。

  //注1:fscanf(fp,"%da%s%s",&num,name,place);可以实现对数据:1a小刚河南;的准确读取,表示两个数据之间以a为界。

  //注2:因为流是指针的性质,所以函数是将各数据块的首地址交给对应参数,所以num需进行&取地址操作,

  //注3:因为name,place本身已表达地址,所以不用改变;

  fscanf(fp,"\n");

  //\n为控制字符,此时文件的位置到了第二行的开始;

  //接着进行操作:fscanf(fp,"%d%s%s",&num,name,place);就可以继续读取第二行

  //所以我们常常只需利用一个while语句就可以将整个文件读取到一个数据结构(进程)中

  /*

  while(!feof(fp))//feof()检测一个文件是否结束,即到达文件尾,若结束,则返回非0值,否则返回0

  {

  fscanf(fp,"%d%s%s\n",&num,name,place);

  }

  */

  //检测读取结果

  printf("%d%s%s\n",num,name,place);

  //关闭流

  fclose(fp);

  return0;

  }

到此,关于“C语言或C++怎样从文本文件中读取和保存数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c c++
AI