简单C++编程问题,程序无错误。实现的是将file1.txt中的文件拷贝到file2.txt中。问题在底部。
#include<iostream.h>#include<fstream.h>voidmain(){charch;ifstreamfin("file1.txt");cou...
#include <iostream.h>
#include <fstream.h>
void main()
{char ch;
ifstream fin("file1.txt");
cout<<"file1.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); //问题1
fin.open("file1.txt"); //问题1
ofstream fout("file2.txt");
while(fin.get(ch)) fout.put(ch);
fin.close();
fout.close();
fin.open("file2.txt"); //问题2
cout<<"file2.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fout.close(); // 问题2
}
问题1:
第9、10行的
fin.close();
fin.open("file1.txt");
为什么要先关闭再打开file1?我删掉这两句后就不能拷贝file1到file2了。
问题2:
第15行为什么以输入流对象打开的file2,第19行却已输出流对象关闭?我改成fin.close()结果也一样。
谢谢~ 展开
#include <fstream.h>
void main()
{char ch;
ifstream fin("file1.txt");
cout<<"file1.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); //问题1
fin.open("file1.txt"); //问题1
ofstream fout("file2.txt");
while(fin.get(ch)) fout.put(ch);
fin.close();
fout.close();
fin.open("file2.txt"); //问题2
cout<<"file2.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fout.close(); // 问题2
}
问题1:
第9、10行的
fin.close();
fin.open("file1.txt");
为什么要先关闭再打开file1?我删掉这两句后就不能拷贝file1到file2了。
问题2:
第15行为什么以输入流对象打开的file2,第19行却已输出流对象关闭?我改成fin.close()结果也一样。
谢谢~ 展开
3个回答
展开全部
为什么要先关闭再打开file1?我删掉这两句后就不能拷贝file1到file2了。
答:谁说的file1要先关闭再打开呢?是这样的,主要是这个程序它首先是将file1的文件打印到屏幕上,然后再读一遍file1,这样fin的流已经跑到文件的结尾了,所以就必须重新打开一次fin流,让它重新从头开始读文件。
第15行为什么以输入流对象打开的file2。
答:为什么以输入流的方式打开file2,那是因为它是把file2的内容读取出来,打印到屏幕上,所以必须用输入流啊。
第19行却已输出流对象关闭?我改成fin.close()结果也一样。
答:其实正确的写法是就是这个fout.close(),因为你fin输入流已经关闭了啊。而为什么结果一样,那是因为它已经到了程序的结尾,在这个时候,C++默认的会自动关闭fout流,所以程序也不会报错啦。
答:谁说的file1要先关闭再打开呢?是这样的,主要是这个程序它首先是将file1的文件打印到屏幕上,然后再读一遍file1,这样fin的流已经跑到文件的结尾了,所以就必须重新打开一次fin流,让它重新从头开始读文件。
第15行为什么以输入流对象打开的file2。
答:为什么以输入流的方式打开file2,那是因为它是把file2的内容读取出来,打印到屏幕上,所以必须用输入流啊。
第19行却已输出流对象关闭?我改成fin.close()结果也一样。
答:其实正确的写法是就是这个fout.close(),因为你fin输入流已经关闭了啊。而为什么结果一样,那是因为它已经到了程序的结尾,在这个时候,C++默认的会自动关闭fout流,所以程序也不会报错啦。
更多追问追答
追问
前面的都知道了,但最后一段“因为你fin输入流已经关闭了啊” 你说的fin流关闭是指fin()这个语句吧,那fin.open("file2.txt")这行打开的就是fout流吗?谢谢 初学者~
追答
fin.close(); 这个语句啊 问题2的上两行。
fout流是输出流,它是指的是从内存到硬盘中。
fin流是输入流,它指的是从硬盘到内存中。
记住这点。
展开全部
#include <iostream.h>
#include <fstream.h>
void main(){
char ch;
ifstream fin("file1.txt");
cout<<"file1.txt:"<<endl;
while(fin.get(ch))cout.put(ch);
cout<<endl;
fin.close(); //问题1
fin.open("file1.txt"); //问题1
//为了回滚啊,指针已经到头了,这两句相当于fin.seekg(0);
ofstream fout("file2.txt");
while(fin.get(ch))fout.put(ch);
fin.close();
fout.close();
fin.open("file2.txt"); //问题2
cout<<"file2.txt:"<<endl;
while(fin.get(ch))cout.put(ch);
cout<<endl;
fout.close(); //问题2
//这个我怀疑错了吧?不是fin.close();吗??
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
#include <fstream.h>
void main()
{
char ch;
ifstream fin("file1.txt"); //---fin是以输入流打开的文件
cout<<"file1.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); //---因为上面已经到了文件结尾 这里要先关闭fin 再打开才能读取(也可以不关闭,用别的方法,这里就不讨论了)
fin.open("file1.txt"); //---fin打开file1
ofstream fout("file2.txt"); //---fout是以输出流打开的文件
while(fin.get(ch)) fout.put(ch);
fin.close();
fout.close();
fin.open("file2.txt"); //输入流打开file2
cout<<"file2.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); // 这里应该是错误,应该是fin
}
#include <fstream.h>
void main()
{
char ch;
ifstream fin("file1.txt"); //---fin是以输入流打开的文件
cout<<"file1.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); //---因为上面已经到了文件结尾 这里要先关闭fin 再打开才能读取(也可以不关闭,用别的方法,这里就不讨论了)
fin.open("file1.txt"); //---fin打开file1
ofstream fout("file2.txt"); //---fout是以输出流打开的文件
while(fin.get(ch)) fout.put(ch);
fin.close();
fout.close();
fin.open("file2.txt"); //输入流打开file2
cout<<"file2.txt:"<<endl;
while(fin.get(ch)) cout.put(ch);
cout<<endl;
fin.close(); // 这里应该是错误,应该是fin
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询