For循环在C中随机停止

时间:2018-09-28 19:17:08

标签: c

很抱歉,如果标题不是特定的,但是我不太确定该如何为该标题命名。我正在创建一个加密给定字符串的函数。在这里:

int ind(char c, char * t){
    int i = 0;
    while (i != strlen(t)){
        if (t[i] == c) return i;
    }
    return -1;
}

void translate2 (char * c, char * ret){
    char used[1000], d;
    int i = 18, size = 0;

    for (i=0; i < strlen(c);i++){
        printf("\nChar: %c",c[i]);
        printf("arguments going in are char %c and str %s", c[i], used);
        if (ind(c[i], used) == -1){
            used[size] = c[i];
            ret[size] = c[i];
            size++;

        }
        else{
            if (ind(c[i], used) == 0){
                d = used[size];
            }
            else {d = used[ind(c[i], used)-1];}
            /*printf("Thus, our d shall be %c\n\n", d);*/
            ret[size] = d;
            size++;
        }
        printf("\nSeq: %s", used);
        printf("\nOutput: %s\n", ret);
    }
}

很抱歉,如果代码混乱,我对此还很陌生。我想代码实际上不是很重要。我在这里的问题是,该代码按首次循环的预期运行。完成后,程序将停止。我不知道为什么会发生这种情况,而且调试器还不足以使用它们。谁能指出我正确的方向?任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

while (i != strlen(t)){
    if (t[i] == c) return i;
}

‘i’不会在循环中递增。您正在无限期地检查第一个元素