The following program crashes. Can someone please tell me what's wrong in this code snippet?
Code:
int i, n = 0, num;
string data;
string *cargo_name_array;
int *cargo_duration_array;
int *cargo_size_array;
ifstream cargo_in("cargo_input.txt"); //opens input file
//gets number of lines
if (cargo_in.is_open()) {
while (cargo_in.good()) {
getline(cargo_in,data);
n++; //line counter up
};
}
else { //file access verification
cout << "Input file access error.";
return 0;
};
cargo_in.clear();
//declares dynamic arrays for cargo parameters
cargo_name_array = new string[n];
cargo_duration_array = new int[n];
cargo_size_array = new int[n];
for (i=1; i<=n; i++) {
getline(cargo_in, data, '\t'); //gets string until tab
cargo_name_array[i] = data; //stores string in array
while (cargo_in.get() == '\t'); //discards consecutive tabs
cargo_in.unget(); //moves back one character
getline(cargo_in, data, '\t'); //gets size string until tab
//converts string to decimal and stores size value
cargo_size_array[i] = (int) strtod(data.c_str(), NULL);
getline(cargo_in, data); //gets duration string
//converts string to decimal and stores duration value
cargo_duration_array[i] = (int) strtod(data.c_str(), NULL);
}
cargo_in.close(); //closes input file