c++文件操作
将一个txt文件内的数字写入.bin文件内,为什么我txt文件内什么都没写.bin文件中也会有东西呢?如图代码如下:#include<iostream>#include<...
将一个txt文件内的数字写入.bin文件内,为什么我txt文件内什么都没写.bin文件中也会有东西呢?如图代码如下:#include<iostream>#include<cstdlib>#include<fstream>#include<iomanip>using namespace std;void main(){ int a[100],n=0; fstream infile("data.txt",ios::in|ios::_Nocreate); if(!infile) { cout<<"Not found ! "; exit(1); } while(!infile.eof()) infile>>a[n++]; infile.close(); fstream outfile("data.bin",ios::out|ios::binary); if(!outfile) { cout<<"No found ! !"; exit(1); } outfile.write((char*)&n,sizeof(int)); outfile.write((char*)a,n*sizeof(int)); outfile.close(); int b[20],i=0,k; fstream in("data.bin",ios::in|ios::binary); while(!in.eof()) { in.read((char*)(b+i),sizeof(int)); i++; if(in.fail()) break; } k=i-1; for(i=0;i<k;i++) cout<<b[i]<<" "; cout<<endl;}
展开
展开全部
你对EOF的用法有点问题
EOF由读取操作产生,对空文件直接用EOF测试没用,要进行一次读取才会得到
你可以把
while(!infile.eof())
infile>>a[n++];
改成
int tmp;
infile>>tmp;
while(!infile.eof())
{
a[n++]=tmp;
infile>>tmp;
}
EOF由读取操作产生,对空文件直接用EOF测试没用,要进行一次读取才会得到
你可以把
while(!infile.eof())
infile>>a[n++];
改成
int tmp;
infile>>tmp;
while(!infile.eof())
{
a[n++]=tmp;
infile>>tmp;
}
更多追问追答
追问
但是就算文件不是空的,也会多出一些东西来啊
我在txt文件中输入一些数字,在写进.bin文件中,但是输入到屏幕上的时候,第一个数字是显示的之前txt文件中数字的个数,这又是怎么回事??
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询