【问题标题】:string array omiting characters z and y省略字符 z 和 y 的字符串数组
【发布时间】:2017-05-13 19:03:12
【问题描述】:

我正在为我的实验室做一项作业,该作业与将字符串从另一个文件加密为文本文件有关,它工作得很好,但我唯一的问题是,当我加密或解密时,加密省略了字母 Z 和 Y。我试过改变一些东西,但没有任何效果,请如果你知道如何解释,因为我迷路了。

这是我目前的代码:

 #include iostream
==
 #include fstream
==
 #include cstring
==
 #include string
==
 using namespace std;

 int main()
 {

    ifstream inputFile;
    ofstream outputFile;
    const int SIZE=150;
    char file[SIZE];
    char message[SIZE+1];
    char letter;  
    char alphabet[]={'A','B','C','D','E','F','G','H','I','J','K','L',
            'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','\0'};



    cout<<"Enter the message you want to encrypt: "<<endl;     //getmessage
    cin.getline(message,SIZE,'\n');

    for(int i=0;i<strlen(message);i++){
       if(islower(message[i]))                               //change to 
            message[i]=toupper(message[i]);                 //uppercase
    }


    outputFile.open("textoNoEncrypt.txt");
    for(int i=0;i<strlen(message);i++){                  //copy message to 
       outputFile.put(message[i]);                      //file
     }
    outputFile.close();

    inputFile.open("textoNoEncrypt.txt");
    if (inputFile.is_open()){
         int i=0;
        while (!(inputFile=='\0')){
            inputFile>>file[i];                       //reading and copying
            i++;                                     //data from file        
        }
    }
    inputFile.close();

    outputFile.open("textoEncrypt.txt");
    for(int i=0;i<strlen(file);i++){
        int j=0;
        int P=0;
        int index=0;
        bool found=false;
        while(!found){
            if(file[i]==alphabet[j]){
                P=j;
                index=(P+3)%26;                     //encrypting message
                file[i]=alphabet[index];        
                found=true;
                cout<<j<<" ";
            }
        j++;
        }
        outputFile.put(file[i]);
    }
    outputFile.close();

    cout<<message<<endl;                        //show original message
    cout<<file<<endl;                           //show encrypted message

    return 0;
 }

【问题讨论】:

  • #include iostream 无法编译。请改用#include &lt;iostream&gt;
  • 欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
  • 如果您的代码确实有效,那么您最好在SE Code Review 寻求改进。
  • ... 否则,解决此类问题的正确工具就是您的调试器。 询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
  • 我会先扔掉所有的文件 IO,然后把它减少为一个输入字符串、你的旋转算法和一个输出到控制台的字符串。如果这行得通,那么你就领先了。如果没有,您只需扔掉 的 io 代码,这些代码会使问题变得混乱,并且可以专注于解决问题。

标签: c++ arrays string encryption


【解决方案1】:

我认为这是由 P+3 行引起的

【讨论】:

  • 这实际上是我需要旋转字母的位置,我不认为是这样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
相关资源
最近更新 更多