[英]Read Numeric Data from a Text File in C++
这是需要编写代码以从文件读取数据的程序。 该文件如下所示:
1234 200.55
5678 1234.56
9876 2.33
我需要将第一个数字存储为帐号,第二个数字存储为帐户余额。
#include<iostream>
#include<fstream>
using namespace std;
const int MAX_NUM=100;
int read_accts(int acctnum[], double balance[], int max_accts);
int main()
{
int acctnum[MAX_NUM];
double balance[MAX_NUM];
int max_accts=0;
int num_accts;
num_accts = read_accts(acctnum,balance,max_accts);
return 0;
}
int read_accts(int acctnum[],double balance[],int max_accts)
{
ifstream infile;
infile.open("information");
while (infile >> acctnum[max_accts] && max_accts < MAX_NUM)
{
infile >> balance[max_accts];
max_accts++;
}
for (int i=0; i<=max_accts; i++)
{
cout << acctnum[i]<<endl;
cout << balance[i]<<endl;
}
infile.close();
return max_accts;
}
该程序的输出是
0
0
它应该与文本文件中的相同。 不应为0和0。
在此先感谢您的帮助。
首先,您要在每个数组中打印太多元素。 打印循环应从0到max_accts
(不包括),如下所示:
for (int i=0; i < max_accts; i++)
现在,由于您正在尝试读取一个名为“信息”的文件,因此我创建了具有问题描述内容的此类文件,并运行了您的代码。 我得到的输出是:
1234
200.55
5678
1234.56
9876
2.33
这看起来像您想要获取的内容(而不是零),因此您的代码似乎正常运行。 也许您没有打开正确的文件?
将文件名从“信息”更正为其他名称,或者确保当前工作目录中有一个名为“信息”的文件。
对于程序的文件部分,下面的代码将是您函数的更好版本。 它使用文件结尾,并具有处理文件的能力,并且不会退出
int read_accts(int acctnum[], double balance[], int max_accts)
{
ifstream infile;
infile.open("information");
if (!infile)//check if file exists
{
//add code to handle missing file here
}
while (!infile.eof())
{
infile >> acctnum[max_accts];
infile >> balance[max_accts];
max_accts++;
}
infile.close();
return max_accts;
}
如何将老式stdio
API用于类似这样的简单任务?:
int accounts[3], i;
float balance[3];
FILE *fp = fopen("file.txt", "r");
for (i = 0; i < 3; i++)
fscanf(fp, "%d %f", &account[i], &balance[i]);
fclose(fp);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.