C语言指针问题显示date_p+2可以是“0”我增加判断之后还是显示这个是我的判断有问题还是形式上有缺陷

这段这么改试试,供参考:
if (NULL == date_p)
return 0;
else {
buff5_p = date_p;
date_p = strstr(buff5_p, "\\:"); // 修改
end_p = strstr(buff5_p, "datastatus1");
if (date_p && end_p) // 修改
memcpy(maxdepth, date_p + 2, (end_p - 3) - (date_p + 2) + 1); // 修改
}