(c ++)试图将数字读入数组,在输出中获取垃圾数字

时间:2015-11-06 04:37:02

标签: c++ arrays

我搜索并搜索了这个主题,但仍然没有,所以我正在诉诸这个。

注意:根本无法使用矢量

所以我试图在这个程序中打开一个文本文件并将数字读入一个数组。程序打开它,并读取它们(我假设),但当我读回数字时,它们是垃圾数字。不确定哪里出错了,不胜感激。这是我的代码:

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

void readNumbers(int numbers[]);

const int MAX_SIZE = 12;

int main()
{
    int numbers[MAX_SIZE];

    readNumbers(numbers);

    for (int i = 0; i < MAX_SIZE; i++)
    {
        cout << numbers[i] << endl;
    }

    return 0;
}

void readNumbers(int numbers[])
{
    int num = 0;

    ifstream inFile;

    inFile.open("numbers.txt");

    if (!inFile)
    {
        cout << "Cannot open the file" << endl;
    }
    else
    {
        inFile >> num;

        while(inFile)
        {
            int i = 0;
            numbers[i] += num;
            i++;
            inFile >> num;
        }
    }
    inFile.close();
}

输出:

1606416400
32767
0
0
0
0
0
0
0
0
0
0

4 个答案:

答案 0 :(得分:2)

i变量是循环的本地变量。尝试将其移到外面:

lastName.set(i,lastName.get(i).substring(1,lastName.get(i).length().toLowerCase()));

答案 1 :(得分:1)

您的数组numbers[]未初始化,除了垃圾值numbers[i] += num;

之外什么也没有增加

因此它打印垃圾数字。

如果增量很重要,请使用:

int numbers[MAX_SIZE]={0}  //while declaration

如果不是:

numbers[i]=num   //inside while 

同样int i=0应该在外面,而我将始终在0内。

答案 2 :(得分:0)

你没有初始化你的numbers数组,因此它会有垃圾。在[{1}}中存储+=时,为什么使用num?你不应该在那里使用作业吗?

numbers[i]

(而且,如前所述,numbers[i] = num; 索引需要在循环外声明,否则你总是在数字中添加/赋值给第一个元素。)

答案 3 :(得分:0)

修复了数组使用中的一些错误。

#include <iostream>
#include <iomanip>
#include <fstream>


using namespace std;

void readNumbers(std::string* numbers);

const int MAX_SIZE = 12;
int nSize = 0;

int main()
{
    std::string numbers[MAX_SIZE];
    readNumbers(numbers);

    for (int i = 0; i < nSize; i++)
    {
        cout << numbers[i] << endl;
    }

    return 0;
}

void readNumbers(std::string* numbers)
{
    ifstream inFile;
    inFile.open("numbers.txt");

    if (!inFile)
    {
        cout << "Cannot open the file" << endl;
    }
    else
    {
        while(!inFile.eof())
        {
            char temp[100] = {0};
            inFile.getline(temp, 100);
            numbers[nSize++].assign(temp);
            if (nSize == MAX_SIZE) break;
        }
    }
    inFile.close();
}