读文件的问题

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.但当第二次读完,结束循环时,系统报错,
我估计是文件的读指针问题,但不知道该怎样修改程序
...全文
88 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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函数
[14本经典Android开发教程] 8 Linux内核阅心得体会 核感悟 2 核感悟 Linux内核启动 内核的生成 2 核感悟 Linux内核启动 从hello world说起 3 核感悟 Linux内核启动 BIOS 5 核感悟 Linux内核启动 setup辅助程序 6 核感悟 Linux内核启动 内核解压缩 8 核感悟 Linux内核启动 开启页面映射 9 核感悟 Linux内核启动 链接脚本 11 核感悟 伪装现场 系统调用参数 13 核感悟 伪装现场 fork 系统调用 15 核感悟 伪装现场 内核线程: 17 核感悟 伪装现场 信号通信 19 核感悟 kbuild系统 内核模块的编译 22 核感悟 kbuild系统 编译到内核和编译成模块的区别 24 核感悟 kbuild系统 make bzImage的过程 26 核感悟 kbuild系统 make menuconfig 31 核感悟 文件系统 用C来实现面向对象 32 核感悟 设计模式 用C来实现虚函数表和多态 32 核感悟 设计模式 用C来实现继承和模板 33 核感悟 设计模式 文件系统和设备的继承和接口 34 核感悟 设计模式 文件系统与抽象工厂 36 核感悟 阅源代码技巧 查找定义 37 核感悟 阅源代码技巧 变量命名规则 42 核感悟 内存管理 内核中的页表映射总结 43 核感悟 健壮的代码 exception table 内核中的刑事档案 44 核感悟 定时器 巧妙的定时器算法 45 核感悟 内存管理 page fault处理流程 45 核感悟 文件写 select实现原理 47 核感悟 文件写 poll的实现原理 49 1 功能介绍: 49 2 关键的结构体: 49 3 poll的实现 49 4 性能分析: 50 核感悟 文件写 epoll的实现原理 50 1 功能介绍 50 2 关键结构体: 51 3 epoll create的实现 53 4 epoll ctl的实现 53 5 epoll wait的实现 54 6 性能分析 54 核感悟 同步问题 同步问题概述 55 1 同步问题的产生背景 55 2 内核态与用户态的区别 55 核感悟 同步问题 内核态自旋锁的实现 56 1自旋锁的总述 56 2非抢占式的自旋锁 56 3 锁的释放 57 4 与用户态的自旋锁的比较 57 5 总结 58 核感悟 内存管理 free命令详解 58 核感悟 文件写 2 6 9内核中的AIO 59 1 AIO概述 59 2 内核态AIO的使用 61 核感悟 文件写 内核态AIO相关结构体 61 1 内核态AIO操作相关信息 61 2 AIO上下文: 63 3 AIO ring 63 4 异步I O事件的返回信息 64 核感悟 文件写 内核态AIO创建和提交操作 65 1 AIO上下文的创建 io setup 65 2 AIO请求的提交:io submit实现机制 66 核感悟 文件操作 AIO操作的执行 66 1 在提交时执行AIO 66 2 在工作队列中执行AIO 66 3 负责AIO执行的核心函数aio run iocb 67 4 AIO操作的完成 67 核感悟 文件写 内核态是否支持非direct I O方式的AIO 67 已上传7本: [14本经典Android开发教程] 1 Android开发从入门到精通 http: download csdn net detail cleopard 8355245 [14本经典Android开发教程] 2 Android开发手册 API函数详解 http: download csdn net detail cleopard 8374487 [14本经典Android开发教程] 3 Android SDK 中文开发文档 http: download csdn net detail cleopard 8380429 [14本经典Android开发教程] 4 Android应用程序开发36技 http: download csdn net detail cleopard 8380495 [14本经典Android开发教程] 5 linux Android基础知识总结 http: download csdn net detail cleopard 8380529 [14本经典Android开发教程] 6 Android驱动开发入门及手机案例开发分析教程 http: download csdn net detail cleopard 8388019 [14本经典Android开发教程] 7 Android编程入门教程 http: download csdn net detail cleopard 8388043 剩余8本稍后上传 @或直接从这里寻找@ http: download csdn net user cleopard album @更多@ http: cleopard download csdn net 福利 http: xuemeilaile com 17份软件测试文档 http: download csdn net album detail 1425 13份WPF经典开发教程 http: download csdn net album detail 1115 C#资料合辑二[C#桌面编程入门篇] http: download csdn net album detail 957 C#资料合辑一[C#入门篇] http: download csdn net album detail 669 [Csharp高级编程 第6版 ] 共8压缩卷 http: download csdn net album detail 667 10个[精品资源]Java学习资料合辑[一] http: download csdn net album detail 663 10个C#Socket编程代码示例 http: download csdn net album detail 631 6份GDI+程序设计资源整合[全零分] http: download csdn net album detail 625 2014年移动游戏行业数据分析 http: download csdn net detail cleopard 8340331 一文懂2014年全球互联网广告新生态 http: download csdn net detail cleopard 8340303">[14本经典Android开发教程] 8 Linux内核阅心得体会 核感悟 2 核感悟 Linux内核启动 内核的生成 2 核 [更多]

65,199

社区成员

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

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