读文件的问题

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.但当第二次读完,结束循环时,系统报错,
我估计是文件的读指针问题,但不知道该怎样修改程序
...全文
144 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函数
内容概要:本文围绕串联谐振双有源桥(SR-DAB)DC-DC变换器的闭环仿真研究展开,重点探讨其在热仿真与效率测试方面的性能表现。研究详细介绍了SR-DAB与LC直流-直流串联谐振变换器相结合的系统架构与建模方法,突出其在高效率能量转换中的优势。内容涵盖控制策略的设计、系统动态响应特性分析、功率损耗计算与温升评估,并基于Matlab/Simulink平台构建闭环仿真模型,验证系统的稳定性、能效水平及热管理能力。此外,研究还分析了该拓扑在新能源发电、微电网系统及电动汽车等领域的应用前景,体现了其在现代电力电子系统中的重要价值。; 适合人群:具备电力电子、自动控制或电气工程等相关专业背景,从事新能源变换器设计、电力系统仿真与优化的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①开展DC-DC变换器闭环控制系统的设计与仿真验证;②进行变换器效率优化与热管理性能分析;③支撑科研论文复现、毕业课题研究或实际工程项目开发。; 阅建议:建议结合Matlab/Simulink工具进行仿真实践,重点关注控制参数的整定过程、系统动态响应特性的变化规律以及效率与温升测试结果的对比分析,同时充分利用文中提供的模型与代码资源,以提升研究效率与仿真精度。
内容概要:本文深入探讨了基于FPGA的PWM信号生成与控制在高速通信领域的实战应用,重点聚焦于高速光通信与毫米波前端系统。文章系统阐述了NCO、DDS、SERDES、JESD204B/C和Partial Reconfiguration等关键技术,并结合Xilinx Zynq UltraScale+ MPSoC平台的多通道PWM控制器设计案例,展示了PWM在TEC温度控制中的实现机制。代码层面涵盖中心对齐PWM生成、AXI-Lite可配置接口、嵌入式PID控制算法、I2C温度监控与中断响应等核心模块,突出FPGA在实时性、并行性和可重构性方面的优势。同时拓展至相控阵雷达、量子通信、卫星载荷等高端应用场景,并展望硅光集成、AI驱动PWM、量子安全配置等未来趋势。; 适合人群:具备数字电路与通信系统基础,从事FPGA开发、高速接口设计或通信硬件研发的工程师,尤其是有3年以上经验的技术人员;也适用于研究生及以上层次的研究人员。; 使用场景及目标:①掌握FPGA实现高精度、多通道PWM控制的核心方法;②理解PWM在光模块温控、毫米波波束成形等通信物理层中的闭环控制架构;③学习软硬件协同设计(如AXI+PID)与工业级可靠性设计(如中断、重配置)的工程实践; 阅建议:建议结合Xilinx Vivado工具进行仿真与综合实践,重点关注时序约束、资源优化与跨时钟域处理,并延伸阅JESD204B/C协议与硅光集成技术以深化系统理解。

65,213

社区成员

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

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