请问以下这段代码有什么错误啊,编译和连接都能通过,但不能执行,如果去掉FOR循环后,就能执行了,为什么啊?
        CString m_string("");
           m_plaintext.GetWindowText(m_string);
     CString str("deceptive");
           for(int i=0,j=0;m_string[i]!='\0' && str[j]!='\0';i++,j++)
           {    
              m_string.SetAt(i,(str[j]-97)%26+m_string[i]);
              if(m_string[i]>122)
                    m_string.SetAt(i,(m_string[i]-123)+97);
        if(j==str.GetLength())
               j=-1;
         }