189 8069 5689

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

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

创新互联公司成立于2013年,先为辽宁等服务建站,辽宁等地企业,进行企业商务咨询服务。为辽宁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

在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++怎样从文本文件中读取和保存数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


网页标题:C语言或C++怎样从文本文件中读取和保存数据
链接地址:http://cdxtjz.cn/article/geieji.html

其他资讯