pt[-1] = 0是什么意思啊该怎么处理
pt[-1] 0是什么意思啊?C/C++ codechar *pt strstr(fn,HTTP_PROTO1)if (pt)pt[-1] 0看一开源代码有
pt[-1] = 0是什么意思啊?
C/C++ code char *pt = strstr(fn,HTTP_PROTO1); if (pt) pt[-1] = 0;
看一开源代码有一上面的部分代码,pt[-1]不知道是想干嘛,故意越界?
有人说pt[-1]就相当与pt-1 (退一格)
[解决办法]不清楚,但是顶。。。。
[解决办法]是的,从字符串fn中寻找HTTP_PROTO1第一次出现的位置,就是第一次出现的前一位设为字符串结束
[解决办法]如果pt指向fn的第0位,就会越界了
你可以看下你代码的上下文
可能查询结果一定不会指向第0位
[解决办法]下标-1就是定义的开始位置问题。
好像之前星羽有个贴子提过。可以找找看。
[解决办法]本意是查找fn中第一次出现HTTP_PROTO1的字符串,然后把后面的全部移除。
但是如果fn是以HTTP_PROTO1开头,那么就出现问题了。应该这样
char *pt = strstr(fn,HTTP_PROTO1);
if(pt && pt != fn)
pt[-1] = 0;
[解决办法]2楼说得对.
pt[-1]是往前倒退一个Byte的位置.
[解决办法]p[m]就是*(p + m)。
[解决办法]设置结束符
[解决办法]对了,就是将现在的指针位置向前移一个位置
[解决办法]int array[N];
int *p = array + 1;
p[-1] = 0; // -1 index 不代表越界,简单指针算术而已。