C ++排序二进制文件 [英] C++ Sorting Binary Files

查看:59
本文介绍了C ++排序二进制文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一段不会编译的代码.

I have a piece of code that won't compile.

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#include <iomanip>
using namespace std;


int average (int n);

int main() 
{

string filename;

int i,j;
int n = 0;
int sum = 0;
int size = 4;
const int nameLength = 19;
const int maxRecords = 100;
int index[100];


int scores[maxRecords];
char names[maxRecords][nameLength];

int count = 0;

cout << "Enter binary data directory and file name: ";
getline (cin, filename);
// Open file for binary read-write access.
    ifstream fin(filename.c_str(), ios::binary);

if (!fin) {
cout << "Could not open " << filename << endl;
system("PAUSE");
return -1;
}

// Read data from the file.
while (
fin.read(names[count], sizeof(names[0]))
     && fin.read((char *) &scores[count], sizeof(scores[0]))
)
{

    count++;
    fin.ignore(); // skip the padding byte
}


// Display the data and close.
 cout << "Your file's data unsorted: " << endl;
cout << endl;
    cout << setw(10) << "Name" << setw(20) <<  "Test Score" << endl;

    for (i=0;i<n;i++){
            cout << setw(10) << names[i] << setw(20) << scores[i] << endl;
    }

            for (i=0;i<n;i++)
    {
            index[i]=i;
    }

    for (i=0;i<n;i++)
    {

            for (j=i+1;j<n;j++)
            {
                    int temp;
                    if (scores[index[i]] > scores[index[j]])
                    {
                            temp = index[i];
                            index[i] = index[j];
                            index[j] = temp;
                    }
            }
    }

    cout << "The average of the test scores in your file is:  " << average         (sum);

sum=sum+scores[i];


fin.close();
system("PAUSE");
return 0;
}

int average (int sum, int size)
{ 
return sum/size;
}

我遇到一个编译错误,提示:致命错误LNK1120:1个未解决的外部组件,我不知道为什么.还有另一个问题是如何格式化它,以使从原始二进制文件读取的数据不会被篡改,然后输出并保存在新的经过编辑的二进制文件中?

I'm getting a compile error that says: fatal error LNK1120: 1 unresolved externals, and I can't figure out why. Also another question is how do you format it so that the data read from the original binary file does not get tampered and is then outputted and saved in a new edited binary file?

推荐答案

您像这样向前声明平均值:

int average (int n);

但是您可以通过以下方式实现平均值:

but you implement average this way:

int average (int n, int size);

如果您更新前向声明并在此处添加第二个参数:

If you update your forward declaration and you add the second argument here:

cout << "The average of the test scores in your file is:  " << average(sum,size);

应该修复它.

这篇关于C ++排序二进制文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆