I may be wrong, but surely you should try reading in the following pattern?
long a,b,c,d;
fscanf(in, "%s, %s %d %d %d %d\n", name2[r],name1[r],a,b,c,d);
Otherwise, wouldn't it be looking for "SmithJohn" instead of "Smith, John 8.5 8.0 9.0 9.5"? If it is looking...