相同代码放在不同的地方输出不同

问题遇到的现象和发生背景

相同的代码放在不同的地方输出不同
实现加密

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
using namespace std;
int cplcode[1000];
int num[1000];
int cnt;
void complicate(int code[],const char* words,int len) {

    int i = 0;
    for (int j = 0; j < len; j++) {
        while (*words) {
            cplcode[j] = *(words++) + code[(i++) % 7];//此数组应该存的是30个数字
            cout << char(cplcode[j]);
            cnt++;
        }
    }
}
//void simplify(int code[],int len) {
//    int i = 0;
//    for (int j = 0; j < len; j++) {
//        num[j] = cplcode[j] - code[i % 7];
//        //cout << cplcode[j]<< " ";
//        i++;
//    }
//
//}
int main() {
    int code[] = { 4,9,6,2,8,7,3 };
    const char* words = "the result of 3 and 2 is not 8";
    int len1 = strlen(words);
    complicate(code, words,len1);
    int len2 = cnt;
    for (int i = 0; i < len2; i++) {
        cout << cplcode[i] << " ";//但我在这里却输出的是不同的数字
}
    //simplify(cplcode,len2);
    return 0;
}

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
      cplcode[j] = *(words++) + code[(i++) % 7];//此数组应该存的是30个数字
        cout << char(cplcode[j]);

你这个while循环一直在给同一个j下标元素进行赋值啊
另外由于words++一直向后移动word指针,导致下次for循环时,while条件直接不满足就拉倒了,实际cplcode就第一个元素有值,因此main里只能输出第一个值,后面全是0