Why are you asking to read 3 elements in each sscanf() ? You only want one element of input (a string) for the EM sscanf, and you only want two elements of inputs (double precision values) for the ALP sscanf.
In your first sscanf() you read as a double but it appears you would likely prefer to read as an floating point number.
In your second sscanf() you have a mix of string and numeric formats. There is a special rule about that, but in your situation it means that what you get out would be two floating point numbers with the strings skipped. Are you sure that you want the two sections to produce two different data types?
Anyhow, your basic problem is that ALP occurs in the middle of the line but you are asking strncmp to compare only to the first 3 characters of dblnk(line). (Note by the way that 'ALP =' would be 5 characters.)
I could suggest you switch to strfind() or the like, but I think you would be better off switching to regexp() do do the processing.