读文件的问题

vcgaoshou 2012-08-25 02:39:57
数据文件input_data.txt中数据如下:
1 2 3 4
2 3 4 1
3 4 2 1

程序很简单,从文本文件input_data.txt中每次读入4个数据,一共读3次。如下,
#include<iostream>
#include<fstream>
using namespace std;
void read(int *mi,ifstream in){
int i;
for(i=0;i<4;i++)
in>>mi[i];
}
int main(){
ifstream i_data("input_data.txt");
int i,j,d[4];
for(i=0;i<4;i++){
read(d,i_data);
for(j=0;j<4;j++)
cout<<d[j]<<" ";
cout<<"\n";
}
i_data.close();
return 0;
}
但是程序出现如下2个问题:
1.第1次调用read函数读正常,但第二次调用read函数读入的仍然是1 2 3 4,
2.但当第二次读完,结束循环时,系统报错,
我估计是文件的读指针问题,但不知道该怎样修改程序
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream &in){
传引用就好了
你本来的做法
in和i_data是两个不同的对象
从in读取了4个数据
i_data没有改变 所以你第二次读到的数据依然是 1 2 3 4

另外 你自己说
每次读入4个数据,一共读3次

但是你的代码却
for(i=0;i<4;i++){
read(d,i_data);
执行了4次read函数 读4次
lin5161678 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数
lin5161678 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数
lin51616780 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数
wfq0987 2012-08-25
  • 打赏
  • 举报
回复
#include<iostream>
#include<fstream>
using namespace std;

void read(int *mi,ifstream &in){
int i;
for(i=0;i<4;i++)
in>>mi[i];
}

int main(){
ifstream i_data("input_data.txt");
int i,j,d[4];
for(i=0;i<3;i++){
read(d,i_data);
for(j=0;j<4;j++)
cout<<d[j]<<" ";
cout<<"\n";
}
i_data.close();
return 0;
}
lin51616780 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数
lin51616780 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数
lin51616780 2012-08-25
  • 打赏
  • 举报
回复
void read(int *mi,ifstream& in){

传引用就OK了
否则 in和i_data是不同的两个对象 从in中读取4个数据 i_data没有变化的 估计是这样出问题

另外
每次读入4个数据,一共读3次
你自己挺明白的是一共读3次 写代码的时候糊涂了
for(i=0;i<4;i++){
read(d,i_data);
}
调用了4次read函数

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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