修改循环内的for-counter

时间:2015-08-04 14:46:03

标签: c arrays loops

我试图修改if循环中的计数器,因为一个数组索引号需要与另一个对应,以便我改变它的文本的位置,但是字符串之间的空格将1添加到柜台。

{
    //The return type is Class
    Class c1 = m.getReturnType();

    //The return type is object
    Object object2 = resultSet.getObject(i);
}

这是其中一次尝试,但它无限循环,我尝试了不同的方法,如:

for(int i = 0, n = strlen(p); i < n; i++){

    if(isspace(p[i])){
        c1 = x[i-1];
        printf("%c", p[i]);
    }
    if(isalpha(p[i])){
        c1 = x[i];
        c2 = c1-96;
        printf("%c --- %c ---%d\n",p[i],c1, c2);
    }

我甚至试图看看我是不是在&#39;反击真的改变了,所以我做了:

    if(isspace(p[i))){
        printf("%c", p[i]);
        i -= 1;
    }

这真的表明它向后退了一次,但是一旦我做了j = i;它翻转到无限循环。

3 个答案:

答案 0 :(得分:2)

问题是i为一个空格递减,但随后在循环结束时递增,指向相同的空格。所以它无限重复。

编辑:

// Off the top of my head, and untested,
// but you should be able to get the idea.
char* textString = "Test Test";
int sourceLen = strlen( textString );
for ( int srcIndex = 0, int destIndex = 0; srcIndex <= sourceLen ; srcIndex++ )
{
    if ( textString[ srcIndex ] != ' ' )
    {
        textString[ destIndex ] = textString[ srcIndex ]; // copies null terminator, too
        destIndex++;
    }
}

答案 1 :(得分:0)

您可以尝试使用while循环:

while(i < n ){

    if(isspace(p[i])){
        c1 = x[i-1];
        printf("%c", p[i]);
    }
    if(isalpha(p[i])){
        c1 = x[i];
        c2 = c1-96;
        printf("%c --- %c ---%d\n",p[i],c1, c2);
    }
}

如果你想增加它,只需添加到i

答案 2 :(得分:0)

在循环内增加i之后,它将再次由for构造递增。您可以更改停止条件:

for(int i = 0, n = strlen(p); i >= n; i++) {

这样,如果i在上一次迭代中增加了多个,那么循环仍将终止。

这是因为

for (CMD_1; COND; CMD_2) CMD_4

相当于

CMD_1
if (COND) {
    CMD_4
    CMD_2
}