一个关于文件流的问题

quanbisheng 2006-05-12 12:40:38
我编了一个小程序,使用C++语言的文件流。该程序功能是:把程序执行时参数指定的文件内容输出到CRT上。比如程序test.exe,我在命令行输入:test aaa.txt bbb.txt,程序就会把这两个文件的内容输出到屏幕上。但是我这个程序只把aaa.txt内容输出,而bbb.txt的却没有输出。很奇怪。
#include "iostream"
using namespace std;
int main(int argc, char* argv[])
{
char ch;
ifstream fin;
for(int i=1;i<argc;i++)
{
fin.open(argv[i],ios::binary|ios::in);
if(fin.is_open())
{
while(fin.get(ch))
{
cout.put(ch);
}
}
cout<<endl;
fin.close();
}

return 0;
}
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸学堂 2006-05-17
  • 打赏
  • 举报
回复
ifstream fin;
fin.seekg( 0, ios_base::beg ); // 文件指针放到最后。

或者
在close之前调用一下,也应该是可以的。
fin.flush();
fin.close();


如果需要询问我问题,为了得到及时性,请给我发短消息。
quanbisheng 2006-05-16
  • 打赏
  • 举报
回复
C++中怎么将文件定位指针定位到文件开头?
我使用了其成员函数好像没什么用。请帮助,谢谢。

lmlmlmnew() ,您的改动应该是不正确的,argv[argc]是不存在的,越界了。

ugg(逸学堂(exuetang.net)) ,您的方法应该可以。谢谢。能告诉我C++中怎么将文件定位指针定位到文件开头么?
quanbisheng 2006-05-15
  • 打赏
  • 举报
回复
谢谢各位。我已经测试出了原因,我的代码之所以出问题,是因为当第一个文件打开并输出后,文件定位指针已经指向了文件结尾,这样当再次打开一个文件后,文件定位指针就无法再输出第二个文件内容。所以如果在打开文件后将文件定位指针定位到文件开头就可以了。问题是:C++中怎么将文件定位指针定位到文件开头?
逸学堂 2006-05-12
  • 打赏
  • 举报
回复
#include "iostream"
using namespace std;
int main(int argc, char* argv[])
{
char ch;

for(int i=1;i<argc;++i)
{
ifstream fin; // 放到这里试一试。
fin.open(argv[i],ios::binary|ios::in);
if(fin.is_open())
{
while(fin.get(ch))
{
cout.put(ch);
}
}
cout<<endl;
fin.close();
}
lmlmlmnew 2006-05-12
  • 打赏
  • 举报
回复
for(int i=1;i<=argc;i++) ////<=
再试试~~
jixingzhong 2006-05-12
  • 打赏
  • 举报
回复
在 C 中文件指针是可以重复使用的 ...
C++ 不允许么?

学习,
楼主可以试试看 ....

=========
如果楼主的代码转换成C的,
感觉一点问题也没有 ....

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧