pt[-1] = 0是什么意思啊该怎么处理
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 不代表越界,简单指针算术而已。
- 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 不代表越界,简单指针算术而已。