凯撒密码c++语言程序,C++中的凯撒密码程序

我想用C++编写凯撒密码程序。我使用了四个函数,一个用于选择Shift键,两个用于加密和解密,最后一个用于实现凯撒密码,使用输入文件读取文本并将加密或解密文本输出到输出文件中。我试图运行代码,它正在崩溃。我认为问题在凯撒功能内部。但我不知道到底是什么。有任何想法吗?这是我的代码:C++中的凯撒密码程序

#include

#include

using namespace std;

int chooseKey()

{

int key_number;

cout << "Give a number from 1-26: ";

cin >> key_number;

while(key_number<1 || key_number>26)

{

cout << "Your number have to be from 1-26.Retry: ";

cin >> key_number;

}

return key_number;

}

void encryption(char *w, char *e, int key){

char *ptemp = w;

while(*ptemp){

if(isalpha(*ptemp)){

if(*ptemp>='a'&&*ptemp<='z')

{

*ptemp-='a';

*ptemp+=key;

*ptemp%=26;

*ptemp+='A';

}

}

ptemp++;

}

w=e;

}

void decryption (char *e, char *w, int key){

char *ptemp = e;

while(*ptemp){

if(isalpha(*ptemp))

{

if(*ptemp>='A'&&*ptemp<='Z')

{

*ptemp-='A';

*ptemp+=26-key;

*ptemp%=26;

*ptemp+='a';

}

}

ptemp++;

}

e=w;

}

void Caesar (char *inputFile, char *outputFile, int key, int mode)

{

ifstream input;

ofstream output;

char buf, buf1;

input.open(inputFile);

output.open(outputFile);

buf=input.get();

while(!input.eof())

{

if(mode == 1){

encryption(&buf, &buf1, key);

}else{

decryption(&buf1, &buf, key);

}

output << buf;

buf=input.get();

}

input.close();

output.close();

}

int main(){

int key, mode;

key = chooseKey();

cout << "1 or 0: ";

cin >> mode;

Caesar("test.txt","coded.txt",key,mode);

system("pause");

}

这里有一些细节我的代码我program.The模板是在我的岗位上。

参数w是开头的文本,参数是解密的文本。如果我们在w *文本中添加shift键并且获得* e,那么正在进行加密。相反的过程使解密函数,我有加密的文本(* e),我想要解密的文本(* w),减去我从chooseKey函数中获得的关键移位。在Caesar函数中,我使用包含一些数据的输入文件,并且想要在输出文件中提取加密或解密的文本。我已经实现了加密和解密功能,我的问题是如何在凯撒函数中使用它们。我没有采取任何理想的结果,我的程序正在崩溃。请提一下我的错误。任何解决方法?

2013-10-28

xaliap81

+3

欢迎堆栈溢出!感谢您发布您的代码,但请在您的问题中多加一点说明:您有什么问题,您期望得到什么结果,以及[您尝试过什么](http://whathaveyoutried.com)到目前为止?通过[问题清单](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)将帮助我们更好地回答你的问题。谢谢! –

+0

我编辑了代码示例以至少编译。您应该将参数设置为'encryption'' const char *'too –

+0

正如其他人所提到的,您应该包含您正面临的确切问题,以使其他人能够帮助您。任何编译错误,运行时错误,... –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值