网络编程中忽略的问题百分相送
大家好:
今天在书写一个网络程序,而后突然思考到了一个很重要的问题,这里提出,欢迎大家讨论一下:
我抓到了一个包,这个包在内存中,我用了一个指针变量保存他,这个指针变量是这样定义的:
unsigned char *data;
现在这个包就在data指向的内存中了,同时,变量datalen中记录着这个包的长度,变量datalen是这样定义的:
unsigned short datalen;
一切看起来都没什么问题,现在思考的问题来了:
我想在data中找一个字符串"abcdefg",那么我的方法如下:
if((strstr(data,"abcdefg") != NULL)
........
首先,大家请帮忙看这个判断的写法有没有错误,如果有则错误在哪里,是否在某个特定的条件下会造成判断出错(明明没有,却找到了)或者是否会造成程序崩溃。
现在第二个问题又出来了,我想找data中位于第一个出现的/与第二个/之间的字符串,大家认为怎样写才是安全的,能保证程序的稳定性。
那么第三个问题如下:
大家看如下代码:
char *p1;char *p2;
char abc[] = "12345";
p1 = abc;
p2 = abc;
p2++;
if(p1 > p2)
显示 p1>p2
else
显示 p1 <= p2
代码完毕,这里向大家请教的是,这是一个指针直接比较的问题,指针就是地址,也就是地址比较,对于*p1 > *p2这种数值比较大家都十分清楚,但这请教的是直接的指针比较,对于指针比较,是否也是一种常用方法呢,是否是如果p1的地址小于p2,那么比较结果就是p1<p2呢,请用过指针比较的朋友给以指点。