读书人

跳出循环了 为什么?解决方案

发布时间: 2012-05-28 17:59:54 作者: rapoo

跳出循环了 为什么?

C/C++ code
    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];            }        }    }


[解决办法]
按照你的思路,给你给了下

C/C++ code
#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
[解决办法]
无符号整数跟有符号整数的比较处问题吧。。。没贴全代码,只是猜测而已

读书人网 >C语言

热点推荐