首页 文章

C使用转置密码加密/解密

提问于
浏览
0

我正在为我的CS2400课程编写一个程序作为家庭作业,我们要么加密消息,解密消息,要么让用户退出 .

我开始设置函数而不在定义中写太多 .

到目前为止这是我的代码 .

#include <iostream>
#include <iomanip>
using namespace std;

void encryption (char message[]);//prototype
void decryption (char message[]);//prototype

int main(){
    int ans=0;
    char message[100];

    while (ans!=3){
        cout << "1. Encrypt a message.\n2. Decrypt a message.\n3. Quit\n";
        cin >> ans;

        if (ans==1){
            encryption (message);
        }

        if (ans==2){
            decryption (message);
        }

        if (ans==3){
            break;
        }
    }

    return 0;
}

void encryption (char message[]){
    int count=0;
    cout << "Please enter a message to be encrypted:\n\n";
    cin.get(message[count]);

    while (message[count]!='\n'){
        count++;
        cin.get(message[count]);
    }

}

void decryption (char message[]){
    int count=0;
    cout << "Please enter a message to be decrypted:\n\n";
    cin.get(message[count]);

    while (message[count]!='\n'){
        count++;
        cin.get(message[count]);
    }

}

运行时,它允许我选择三个选项,但是当选择加密或解密时,它会打印请求输入的语句然后让我再次选择而不给我任何输入的机会 .

关于它为什么不给我机会输入任何东西的任何想法?

1 回答

  • 1

    问题是 cin >> ans 不使用Enter键(换行符) . 因此,当您继续调用 cin.get() 时,返回的第一个字符是上一行的Enter键 .

    更好的想法是使用std::getline进行所有用户输入 . 这样做可以避免这个问题 .

相关问题