when I run this I get a bus error.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// Forward Declarations
//Post: opens file fname, reads file, returns an dynamic arrary of integers
// arrSz is passed by reference to keep track of size of dynamic array
void readData(string fname,int & arrSz);
int main (int argc, char * const argv[]) {
int filesize = 0;
readData("example.txt", filesize);
return 0;
}
// Reads contents of file into an array
// returns array, arrSz records the array size
void readData(string fname, int & arrSz){
//Declare Variables
int* result = NULL;
arrSz = 0;
int temp;
//Create a file object and open the file
ifstream inStream;
inStream.open(fname.c_str());
//only process file if opening it is successful
if(!inStream.fail()){
//find out how big the file is
while(!inStream.eof()){
arrSz++;
inStream >> temp; //reads line intotemp and moves to the next line
}
//admin functions to refresh file
inStream.close();
inStream.clear();
inStream.open(fname.c_str());
//Read file contents into result, now that size is known
result = new int[arrSz]; //creates results array
//reads contents into array
for(int i; i < arrSz; i++){
inStream >> result;
}
inStream.close();
}
cout << result[0];
}
I think the problem is in the argument "example.txt" When I get rid of the string fname parameter and just put the file name directly into inStream.open then it works fine. Any ideas?
Thanks
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// Forward Declarations
//Post: opens file fname, reads file, returns an dynamic arrary of integers
// arrSz is passed by reference to keep track of size of dynamic array
void readData(string fname,int & arrSz);
int main (int argc, char * const argv[]) {
int filesize = 0;
readData("example.txt", filesize);
return 0;
}
// Reads contents of file into an array
// returns array, arrSz records the array size
void readData(string fname, int & arrSz){
//Declare Variables
int* result = NULL;
arrSz = 0;
int temp;
//Create a file object and open the file
ifstream inStream;
inStream.open(fname.c_str());
//only process file if opening it is successful
if(!inStream.fail()){
//find out how big the file is
while(!inStream.eof()){
arrSz++;
inStream >> temp; //reads line intotemp and moves to the next line
}
//admin functions to refresh file
inStream.close();
inStream.clear();
inStream.open(fname.c_str());
//Read file contents into result, now that size is known
result = new int[arrSz]; //creates results array
//reads contents into array
for(int i; i < arrSz; i++){
inStream >> result;
}
inStream.close();
}
cout << result[0];
}
I think the problem is in the argument "example.txt" When I get rid of the string fname parameter and just put the file name directly into inStream.open then it works fine. Any ideas?
Thanks