跳出循环了 为什么?
for (unsigned int i = 0;i < nLen;i++) { if (ptsz[i] == '[') //第一次进入到这里直接跳出循环了 nLen = 200多啊。为什么呢? { for (int j = 0;j < 32;j++) { ptsz++; if (ptsz[i] == ']') { break; } sz[i] = ptsz[i]; } } }#include <stdio.h>#include <stdlib.h>#include <string.h>void test(){ char sz[128]; char *srcStr="[182.150.238.111]"; int k=0; int nLen=strlen(srcStr); for (unsigned int i = 0;i < nLen;i++) { if (srcStr[i] == '[') { for (int j = i+1;j< 32;j++) { if (srcStr[j] == ']') break; sz[k++] = srcStr[j]; } sz[k]=0; break; } } printf("IP is %s\n",sz);}void main(){ test();}
[解决办法]
you hu hu hu
把ptsz的数组定义,还有前面的代码拿出来,这点代码的话没有办法判断上下文
[解决办法]
不贴出全部代码不知道你哪儿错了
不过你的
ptsz++;
if (ptsz[i] == ']')
{
break;
}
sz[i] = ptsz[i];
肯定是写错了:
1、ptsz++以后,以后i逐渐增加,ptsz[i]都不知道指哪儿去了,肯定不是你本意;
2、sz[i] = ptsz[i]这句话,反复给sz[0]赋值,有意义吗?
[解决办法]
...
额,看一下你ptsz数组中的内容是什么,而且为什么要用ptsz++,
这个语句的话容易不小心数组超界,你的break是什么意思?,是要重新开始32次的那个循环吗?
如果是的话纠错了,用break;会直接跳回len的那个循环,要用continue
[解决办法]
无符号整数跟有符号整数的比较处问题吧。。。没贴全代码,只是猜测而已