This seems like an old, solved problem, but I can't find any simple answers. I'm reading latitude and longitude data as Strings from a file (about 50 points), but they are really double float numbers.
First, I want to find the min/max ranges. Then, later, I want to do some calculations on them. I don't really want to keep reading the file, so I want to put them in an array. But no matter what kind of array I use (3 examples below), the program crashes with stack errors.
const char *latArray[ptsN];
const char *lngArray[ptsN];
// or
String latArray[ptsN];
String lngArray[ptsN];
// or
double latArray[ptsN];
double lngArray[ptsN];
while( myFile.available() ) {
lineN++;
String latGet = myFile.readStringUntil(',');
double dLat = StrngToDouble( latGet );
if( dLat < minLat ) minLat = dLat;
if( dLat > maxLat ) maxLat = dLat;
latArray[lineN] = latGet; // put in String array
// or
latArray[lineN] = latGet.c_str(); // put in const char * array
// or
latArray[lineN] = dLat; // put in double array
String lngGet = myFile.readStringUntil(',');
double dLng = StrngToDouble( lngGet );
if( dLng < minLng ) minLng = dLng;
if( dLng > maxLng ) maxLng = dLng;
lngArray[lineN] = lngGet; // put in String array
// or
lngArray[lineN] = lngGet.c_str(); // put in const char * array
// or
lngArray[lineN] = dLng; // put in double array
String tmp = myFile.readStringUntil('\n');
}
where
double StrngToDouble( String dblString ) {
double temp = strtod( dblString.c_str(), NULL );
return temp;
}
This can compile and work - EXCEPT for reading the arrays and calculating using the floats, no matter what type of arrays I try using. It just crashes. What's the best way to resolve this? Thanks, Rick
lineN
? How much RAM is statically allocated (the compiler tells you that)?lineN
?...lineN++
, so you start with slice 1 instead of slice 0. Do you then go to fill sliceptsN
? That's one more slice than you have...