¿Por qué obtengo una falla de aserción?

Este código falla cuando intento depurarlo usando VC2010:

char frd[32]="word-list.txt";

FILE *rd=fopen(frd,"r");
if(rd==NULL)
{
std::cout<<"Coudn't open file\t"<<frd;
exit(1);
}
char readLine[100]; 
while(fgets(readLine, 100, rd) != NULL)
{     
    readLine[strlen(readLine) - 1] = '\0'; 
    char *token = NULL; 
    token = strtok(readLine, " ,"); 
    insert(readLine);
} 

Debugging resulta en

--------------------------- Biblioteca de depuración de Microsoft Visual C ++ -----------

¡Depuración de aserción

Program: ... \ documents \ visual studio 2010 \ Projects \ bfa \ Debug \ bfa.exe Archivo: f: \ dd \ vctools \ crt_bld \ self_x86 \ crt \ src \ fgets.c Línea: 57

Expresión: (str! = NULL)

Para obtener información sobre cómo su programa puede causar un error de aserción, consulte la documentación de Visual C ++ en afirmaciones.

(Presione Reintentar para depurar la aplicación)

--------------------------- Abortar vuelva a intentar ignora

El error que obtengo es 2;

Respuestas a la pregunta(4)

Su respuesta a la pregunta