怎么样用c、c++读取别人写的dat文件 5
展开全部
C语言的文件操作是用指针来完成的,你首先需要一个文件指针
FILE* fp; 然后调用一批操作文件的函数来读写文件。
fopen() 打开文件
fread() 读文件
fseek()在文件中前进后退
fclose()关闭文件
C++语言的文件操作是面向对象的方式的,你首先要有一个文件对象,文件对象初始化的时候传入文件名,就构造出了读写文件的对象,然后操作这些对象来完成读写。
ifstream file1("c:\\pdos.def");//以输入方式打开文件,file1是一个读文件对象。
ofstream file2("c:\\x.123");//以输出方式打开文件 ,file2是一个写文件对象。
例如关闭文件就调用
file1.close();
读入文件可以用get成员函数
file2.get(str1, 1024, '\n'); //从文件中读取字符到字符串str1,当遇到回车或读取了1024个字符时终止。
检测是否到达文件结尾用eof函数
if(file2.eof()) printf("已经到达文件尾!");
C++操作文件的前进后退的函数是 seekg()和 seekp(),例如
file1.seekg(128,ios::end);//把文件的读指针从当前位置向后移128个字节
file2.seekp(1024,ios::beg);//把文件的写指针从文件开头向后移1024个字节
还有最后一点,就是不管是什么语言,当你读一个文件的时候,你需要弄清楚文件的格式,例如文件中的数据是弄哪种分隔符的,是tab还是回车还是逗号分隔,针对具体的文件格式编写自己的读写函数,C++提供的标准函数并不能直接帮你完成各种格式的读取。
FILE* fp; 然后调用一批操作文件的函数来读写文件。
fopen() 打开文件
fread() 读文件
fseek()在文件中前进后退
fclose()关闭文件
C++语言的文件操作是面向对象的方式的,你首先要有一个文件对象,文件对象初始化的时候传入文件名,就构造出了读写文件的对象,然后操作这些对象来完成读写。
ifstream file1("c:\\pdos.def");//以输入方式打开文件,file1是一个读文件对象。
ofstream file2("c:\\x.123");//以输出方式打开文件 ,file2是一个写文件对象。
例如关闭文件就调用
file1.close();
读入文件可以用get成员函数
file2.get(str1, 1024, '\n'); //从文件中读取字符到字符串str1,当遇到回车或读取了1024个字符时终止。
检测是否到达文件结尾用eof函数
if(file2.eof()) printf("已经到达文件尾!");
C++操作文件的前进后退的函数是 seekg()和 seekp(),例如
file1.seekg(128,ios::end);//把文件的读指针从当前位置向后移128个字节
file2.seekp(1024,ios::beg);//把文件的写指针从文件开头向后移1024个字节
还有最后一点,就是不管是什么语言,当你读一个文件的时候,你需要弄清楚文件的格式,例如文件中的数据是弄哪种分隔符的,是tab还是回车还是逗号分隔,针对具体的文件格式编写自己的读写函数,C++提供的标准函数并不能直接帮你完成各种格式的读取。
展开全部
找到他写的dat文件,点鼠标右键,选择打开方式,浏览找你电脑里安装的编程软件,左键点一下编程软件即可!望采纳!
追问
用VC++6.0打开是乱码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果dat文件是文本文件,就与读取txt文件一样直接,请参考其他人的回答。
如果dat文件是二进制文件,那就必须知道写入格式,即是他是如何写入的,比如说他是先写入一个int再写入两个char再写入三个double,你读取也要按照那个顺序,否则读出来的数据与他写入的数据意义不一致
想要判断一个文件是文本文件还是二进制文件,可以用记事本打开它,如果看到的内容无乱码就是文本文件,如果看到的是一大串乱码则是二进制文件。
如果dat文件是二进制文件,那就必须知道写入格式,即是他是如何写入的,比如说他是先写入一个int再写入两个char再写入三个double,你读取也要按照那个顺序,否则读出来的数据与他写入的数据意义不一致
想要判断一个文件是文本文件还是二进制文件,可以用记事本打开它,如果看到的内容无乱码就是文本文件,如果看到的是一大串乱码则是二进制文件。
追问
文件里面的东西不是自己写的,里面是一些文字内容,用记事本打开是乱码,就是不知道是用什么格式输入的,输出到屏幕不知道要用什么格式打开,有没有什么办法解决?
追答
不知道输入格式,没有办法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
file fp =fopen(文件名, "rb+");
if fp == NULL
....
fread(....
fseek(...
fclose(fp);
就可以了
if fp == NULL
....
fread(....
fseek(...
fclose(fp);
就可以了
追问
用二进制打开输出的依然是乱码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询