Эта строка читает из файла в буфер с именем line
gets ( line, sizeof line, fp ) != NULL
Внутренний бит цикла, вероятно, должен что-то делать с этой строкой?Вместо того чтобы использовать fscanf для чтения из указателя файла, как насчет использования «sscanf» для чтения из строки, которую вы только что прочитали?
Без дополнительного контекста трудно понять, что вы пытаетесь сделать.Если вы пропускаете пустые строки, тогда, я думаю, код может иметь смысл.