0

我是编程和 C++ 的新手。我正在处理一项任务,该任务要求我从数据文件中读取数据并将其存储到二维数组中。文本文件中的每一行都采用以下格式(数据类型为 int)

XXXX XX XX XX XX ...(等等)

四位数字实际上是学生 ID,将存储在单独的一维数组中。我已经完成了这部分,我没有任何问题。现在剩下的 2 位数字将存储在 4 列和 X 行的二维数组中,其中 X 是数据文件中的行数。

我编写了以下代码来尝试读入文件。它没有给出错误并且可以正确编译,但是当我尝试使用 打印二维数组时cout,我什么也没得到。没有什么。请查看以下代码并尝试帮助我。

我是 stackoverflow 和编程的新手,所以如果代码格式不正确或不符合传统,请原谅我。

//___CODE____
#include<iostream>
#include<iomanip>
#include<fstream>
#include<cstdlib>
#include<string>

using namespace std;

//Global
const int SIZE = 1000;
int const col = 4; 
string fileName; 


//Function Prototypes
int readId(int id[], int size);
int readScores(int scores[][col], int size);

//Main
int main()
{
int examScores[SIZE][col];
int id[SIZE] = {}; 

cout<<endl; 

readId(id, SIZE);                                
readScores(examScores, SIZE);                   



}
//Declarations

int readId(int id[], int size)
{
ifstream inputFile;
int count = 0;
int total = 0; //Size of id [] OR no. of students.
int temp = 0;

//Takes the name of the data file from the user.
//NOTE: The filename should include its extension.
cout<<"Enter the name of the data file (including the extension):";
cin>>fileName;

inputFile.open(fileName.c_str());

if(inputFile.is_open())
    {
        while(inputFile >> temp)
        {
            if(count % 5 == 0)
            {
                id[total] = temp;
                total++;
            }
            ++count;
        }
    }

else
    cout<<"Data file not found!"<<endl; // If this is executed make sure the data file
                                        //is located in the same directory as this program.
//To print the content of array. Check.
for(int i=0; i < total; i++)
    cout<<id[i]<<endl;

return total;
}


int readScores(int scores[][col], int size)
{
ifstream inputFile;

int count = 0;
int c = 0; //Counter for column.
int total = 0; //No. of students.
int temp = 0;

inputFile.open(fileName.c_str());
if(inputFile.is_open())
    {
        while(inputFile >> temp)
        {
            if(count % 5 != 0)
            {
                if (c < col)
                {
                    scores[total][c] = temp;
                }
                else
                    total++;
                    c = 0;
                    scores[total][c] = temp;
            }
            ++count;
            c++;
        }
    }

else
    cout<<"Data file not found!"<<endl; // If this is executed make sure the data file
                                        //is located in the same directory as this program.

//To print the contents of 2D array. Check.
for (int r = 0; r < total; r++)
{
    for (c = 0; c < col; c++)
        {
            cout<<setw(8)<<scores[r][col];
        }
    cout<<endl;
}
return total;
} 
4

1 回答 1

0

您的 else-Statement 是错误的,缺少一些括号(现在您总是将 c 重置为零)

于 2013-09-15T19:59:21.550 回答