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); // 修改
}
不知道你这个问题是否已经解决, 如果还没有解决的话:这个问题可能是由于代码存在一些缺陷导致的。下面是一些可能的解决方案:
检查指针的初始化:确保指针变量date_p
在使用之前已经被正确地初始化。如果指针没有被初始化或者指向了一个无效的内存地址,那么执行date_p+2
的结果可能是不确定的。
检查内存访问:确保指针date_p
指向的内存地址是可读的。如果该内存地址已经被释放或者没有被正确分配,那么执行date_p+2
时可能会出现问题。可以使用malloc()
函数为指针分配内存,并在使用完毕后使用free()
函数释放内存。
检查指针的类型:确保指针的类型与所指向内存的类型相匹配。如果指针的类型与所指向内存的类型不匹配,那么执行date_p+2
时可能会出现问题。可以使用类型转换来强制指针的类型匹配。
如果以上方法都没有解决问题,那么可能是代码逻辑或其他地方存在问题。可以尝试提供更多的代码或错误信息以便进一步排查问题。
memcpy 的原型是 void *memcpy(void *destin, void *source, unsigned n);
你这代码中三个参数类型对不对,不对需要加上强制转换
你这个是代码存在语法错误。至于有没有逻辑错误先不谈。