gpt4 book ai didi

c++ - 来自输入文件的动态数组

转载 作者:行者123 更新时间:2023-11-30 04:00:11 25 4
gpt4 key购买 nike

我是初学者,所以如果这真的是个愚蠢的问题/问题,我很抱歉。我的任务是从输入文件中打印出一个动态数组。我试着用谷歌搜索它,我发现了一些类似的问题……但答案都是“使用 vector ”等,但我们还没有学到这些。也说必须用一个函数。这是我想出的:

#include <iostream>
#include <fstream> //file input

using namespace std;

int *out(int *arr, int siz){

arr = new int[siz];
for (int i = 0; i < siz; i++) {
cout << arr [i] << " ";
}
return arr; //this should print out the array later???

}

int main(){

int siz;
int *arr;

ifstream inf ("input.txt");
inf >> siz; //
for (int i = 0; i < siz; i++) {
inf >> arr[i];
}
inf.close();


cout << "This array contains following elements: ";
*arr = *out(arr, siz) ;

delete[] arr;
return 0;}

所以,它不会给 Dev-C++ 带来任何错误,但是当我尝试运行它时,它崩溃了。我试着调试它,然后它给了我“段错误”或类似的东西。然后当然是google了一下,指针肯定有问题吧?你能帮帮我吗?谢谢。

最佳答案

当 arr 尚未分配或初始化为有效数组时,您正在尝试访问 arr。在使用 arr 填充元素之前,您的 main 需要分配 arr :所以,这是更改后的版本:

#include <iostream>
#include <fstream> //file input

using namespace std;

void out(int *arr, int siz){
for (int i = 0; i < siz; i++) {
cout << arr [i] << " ";
}
}

int main(){

int siz;
int *arr;

ifstream inf ("input.txt");
inf >> siz;
arr = new int[siz]; // added
for (int i = 0; i < siz; i++) {
inf >> arr[i];
}
inf.close();

cout << "This array contains following elements: ";
out(arr, siz);

delete[] arr;
return 0;
}

关于c++ - 来自输入文件的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26463887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com