大文件每行读取报错了

if(strstr((const char *)DataPointer,(const char *)"\n") != NULL) 
{
    p = (char *)strstr((const char *)DataPointer,(const char *)"\n");  
    //没到文件结尾  读取一行
    *p = '\0';
    sOutput = (const char *)DataPointer;
    DataPointer = p+1;
    *p = '\n';
    return sOutput;
}
else
{//到达文件结尾  读取最后一行 指针返回文件头部
    sOutput = (const char *)DataPointer;
    DataPointer = Kddobj::lpbMapAddress;
    Kddobj::backtoHead = 1;
    return sOutput;
}   

读取到最后一行的时候报错了。if(strstr((const char *)DataPointer,(const char *)"\n") != NULL) 这里报错了。