繁体   English   中英

从C ++中的文本文件读取数值数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM