每次运行代码时程序都会提供不同的输出

时间:2017-09-08 05:09:03

标签: c++ filestream

我创建了一个程序,它从文件中读取数字并存储在3个数组中,然后将其打印在另一个文件中。代码如下:

    #include <iostream>
    #include <cstdlib>
    #include <fstream>

        int main() {
            std::ifstream input("input.txt");
            input >> n;
            int* array1 = new int(n);
            int* array2 = new int(n);
            int* array3 = new int(n);
            for(int i = 0; i< n; i++){   
                input_file >> array1[i];
                input_file >> array2[i];
                input_file >> array3[i];
            }
            std::ofstream output("output.txt");
            for(int i = 0; i< n; i++){
                output << array1[i] <<"\t";
                output << array2[i]<<"\t";
                output << array3[i]<<std::endl;
            }
}

输入文件如下: 5
1 2 3
3 4 5
5 6 7
7 8 9
9 10 11

每次运行程序时,它都会以不同的方式打印输出的第二行,例如
1 9 10或
1 2 10或
1 9 3

有时会正确打印。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

问题很可能是您的分配:new int(n)分配 一个 整数值,并将其初始化为值n

由于您只为数组分配一个整数值,因此您将越界,这将导致undefined behavior,这会导致整个程序格式错误

分配&#34;数组&#34;你需要在new int[n]中使用方括号。或者更好的是,使用std::vector