Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading data from file into an array

The program output Should be:

The numbers are: 101 102 103 104 105 106 107 108 108 110

But my output is:

The numbers are: 0 0 0 0 0 0 0 0 1606416272 32767

This is my code:

// This program reads data from a file into an array.

#include <iostream>
#include <fstream> // To use ifstream
using namespace std;

int main()
{
    const int ARRAY_SIZE = 10; // Array size
    int numbers[ARRAY_SIZE];   // Array number with 10 elements
    int count = 0;             // Loop counter variable
    ifstream inputFile;        // Input file stream object

    // Open the file.
    inputFile.open("TenNumbers.rtf");

    // Read the numbers from the file into the array.
    while (count < ARRAY_SIZE && inputFile >> numbers[count]){
        count++;
    }

    // Close the file.
    inputFile.close();

    // Display the numbers read:
    cout << "The numbers are: ";
    for (count = 0; count < ARRAY_SIZE; count++){
        cout << numbers[count] << " ";
    }

    cout << endl;

    return 0;
}

This is the contents of the TenNumbers.rtf file I'm reading the data from:

101
102
103
104
105
106
107
108
109
110

UPDATE 1: I tried using txt file but the results are similar.

The numbers are: 0 0 0 0 0 0 0 0 1573448712 32767

UPDATE 2: I found where the issue was. After running if (inputFile.good()) I found out the file was not getting opened.

like image 260
Dante Avatar asked May 02 '26 00:05

Dante


1 Answers

Hi I have compiled your code, with the .txt it runs well, without gives the strage numbers that you see. So probably you are opening a file that does not exists, or can not be red.

// This program reads data from a file into an array.

#include <iostream>
#include <fstream> // To use ifstream
#include <vector>
using namespace std;

int main()
{
    std::vector<int> numbers;
    ifstream inputFile("c.txt");        // Input file stream object

    // Check if exists and then open the file.
    if (inputFile.good()) {
        // Push items into a vector
        int current_number = 0;
        while (inputFile >> current_number){
            numbers.push_back(current_number);
        }

        // Close the file.
        inputFile.close();

        // Display the numbers read:
        cout << "The numbers are: ";
        for (int count = 0; count < numbers.size(); count++){
            cout << numbers[count] << " ";
        }

        cout << endl;
    }else {
        cout << "Error!";
        _exit(0);
    }

    return 0;
}

This snippet checks if the file exists, raises an error if not, and uses a vector(more suitable in c++)

like image 156
Naramsim Avatar answered May 03 '26 14:05

Naramsim



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!