我创建了一个程序,它从文件中读取数字并存储在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
有时会正确打印。 任何帮助表示赞赏。
答案 0 :(得分:3)
问题很可能是您的分配:new int(n)
分配 一个 整数值,并将其初始化为值n
。
由于您只为数组分配一个整数值,因此您将越界,这将导致undefined behavior,这会导致整个程序格式错误
分配&#34;数组&#34;你需要在new int[n]
中使用方括号。或者更好的是,使用std::vector
。