ошибка fgets() - программа вылетает

1) убедитесь, что переданный вами указатель fp действительно указывает на файл (то есть , что файл открыт)
2) помните что в си параметры передаются только по значению - то есть если вы открывали файл передавая дискриптор в другую функцию, убедитесь ,что та функция вернула дескриптор в текущий блок .