Well you've completely trashed the stack with something.
Are you sure things like char call[4]; are large enough. That's only 3 chars and a \0
Code:
char buff[BUFSIZ];
char call[BUFSIZ];
float lat;
float lon;
char name[BUFSIZ];
while ( fgets( buff, sizeof buff, radar_file ) != NULL ) {
if ( sscanf( buff, "%s %f %f %s",call,&lat,&lon,name ) == 4 ) {
} else {
// error in format of line
}
}
Notice the feof() has gone, as per the FAQ we keep telling you to not bother to read.
Using BUFSIZ for call may seem excessive, but I want to keep it simple, rather than having to explain the complicated syntax of limiting string length conversions in sscanf.