代码如下,练习IO流读写文件,希望使用cout<<ch2只输出由ch1预写入文件的字符串,但结果是输出了“已成功写入二进制文件烫烫烫烫烫烫已成功写入二进制文件”,该怎么改?
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
void main()
{
char ch1[30]="已成功写入二进制文件",ch2[30];
//注意:ch2只定义了 30个字节的空间
ofstream outfile("test.dat",ios_base::binary|ios_base::trunc);
int i=strlen(ch1);
outfile.write(ch1,strlen(ch1));
//使用.write(),得到二进制文件
outfile.close();
ifstream is;
is.open("test.dat",ios_base::binary);
if(!is.fail())
{
is.read(ch2,strlen(ch1));
char cc;
for(int i=0;i<=strlen(ch2);i++)
//问题出在这,strlen(ch2)=50,这大大超过了定义的大小,怎么回事?
{cc=ch2[i];cout<<cc;}
}
else
{
cout<<"ERROR:Can't open file 'test.dat' !"<<endl;
}
is.close();
}