#include <iostream>
#include <fstream>
using namespace std;
int fillArray(ifstream& ifs, int array[]){
int cur;
int counter = 0;
if(ifs>>cur){
counter = fillArray(ifs, array) + 1;
array[counter-1] = cur;
}
return counter;
}
int main(int argc, const char * argv[]) {
int count;
int array[] = {0};
ifstream myfile ("/Users/Desktop/example.txt");
count = fillArray(myfile, array);
for (int i = 0; i<count; i++){
cout<<array[i]<<endl;
}
myfile.close();
return 0;
}
例如,如果输入文件为&#34; 1 2 3 100 19 16 33&#34;,则生成的数组为&#34; 33 7 19 100 3 2 1&#34;。 如果输入文件是&#34; 1 2 3 4 5&#34;,则数组将是&#34; 5 5 3 2 1&#34;。 我不介意反向填充,但我不明白第二个最后一个发生了什么。
这段代码在VS中运行良好,只在xcode中有问题。
答案 0 :(得分:3)
此代码只是偶然“在VS中正常工作”。它创建一个包含一个元素的数组,然后存储在数组的末尾,因此它深入到未定义的行为。使用std::vector<int>
;而不是硬编码数组;这将允许您添加所需的元素。每次获得新元素时,您都可以调用push_back
将其放入向量中。