读取文本文件中的多行并写入另一个文本文件

Read multiple line in text file and write in another text file

本文关键字:文件 另一个 文本 取文本 读取      更新时间:2023-10-16

这是我的分数.txt文件

7 2 11 4
9 1 30 3
5 3 20 3
10 1 10 2
5 0 50 0

这是 5 场板球比赛局的扣留

以上细节的结构:

在文本文件中,第一列表示 7 轮、2 次、11 次运行、4 次检票口。

我想在文本文件中获取五个投球手(计算列),并平均(第三列值除以第四列)并在终端中打印/显示。

如下所示:

Bowler    Average
1         2.75
2         10
3         6.66
4         5
5         NA
6         NA

上面的文件有六个投球手,但最后一个是重复的。我尝试仅将其修复为五次,因为分数.txt文件有五行。

这是我的代码

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
using std::setw;
int main(){
    float avg;
    int over,maiden,runs,wickets;
    ifstream scores;
    scores.open("scores.txt");
    if(!scores){
        cout<<"Error n";
        return -1;
    }
    ofstream average("average.txt");
    if(!average){
        cout<<"Error n";
        return -1;
    }
    average << "Bowler"<<"t"<<"Average"<<endl;
    int i=1;
    //scores >> over >> maiden >> runs >> wickets;
    while(!scores.eof()){
        scores >> over >> maiden >> runs >> wickets;
        avg = runs/float(wickets);
        if(wickets == 0){
            average<<i<<"t"<<"NA"<<endl;
        }else{
            //avg = runs/float(wickets);
            average << i<<"t"<<avg<<endl;
        }
        i++;
    }
    scores.close();
    average.close();
    return 0;
}

我认为你的问题是这条线

while(!scores.eof()){

当你读完最后一行时,scores.eof() false,你尝试读另一行,读取失败(scores.eof()变得true),你不测试读数是否有错误,你使用最后一行值的两倍。

我建议类似

while( scores >> over >> maiden >> runs >> wickets ){
    avg = runs/float(wickets);
相关文章: