【发布时间】:2017-02-25 23:54:50
【问题描述】:
我目前正试图破译一个交给我的文本文件。我要使用一个数组 ex: where alphabet_size = 26
char code[ALPHABET_SIZE] = {'i','z','t', 'o', 'h', 'n', 'd', 'b', 'e', 'q', 'r', 'k', 'g', 'l', 'm', 'a', 'c', 's', 'v', 'w'
, 'f', 'u', 'y', 'p', 'j', 'x',}
使用包含此内容的另一个字符数组文件破译
ifqkwxcadf ar cei fpoi masif cd cei xkdqirr du pxxnwafm pf pnmdkaceo cd p oirrpmi, teaqe rqkpohnir cei gpcp af ac-oplafm ac sikw gauuaqvnc pfg caoi qdfrvoafm, au fdc xkpqcaqpnnw aoxdrrahni, cd gigvqi cei dkamafpn masif dfnw cei ifqdgig gpcp. afxvcr cd cei pnmdkaceo cwxaqpnnw afsdnsi pggacadfpn riqkic gpcp qpnnig liwr, teaqe xkisifcr cei oirrpmi ukdo hiafm giqdgig-isif au cei pnmdkaceo ar xvhnaqnw lfdtf.
我尝试的是(不使用字符代码数组,而是使用 if 语句来检查加密的消息[0] = 'a' then message[0] = 'i'
for (int num = 0; message[num] != '\0'; num++)
{
if (message[num] == 'a') { message[num] = 'i'; }
if (message[num] == 'b') { message[num] = 'z'; }
if (message[num] == 'c') { message[num] = 't'; }
if (message[num] == 'd') { message[num] = 'o'; }
if (message[num] == 'e') { message[num] = 'h'; }
但最后收到了另一个奇怪的消息
elcujpjeml eu jbe lame geuel jm jbe pumceuu mf appljelg al algmuejbm jm a meuuage, jbecb ucuambleu jbe daja el ej-makelg ej ueuj deffeculj ald jeme cmluumelg, ef lmj puacjecallj empmuueble, jm deduce jbe muegelal geuel mllj jbe elcmded daja. elpuju jm jbe algmuejbm jjpecallj elumlue addejemlal uecuej daja called keju, jbecb pueuelju jbe meuuage fumm beelg decmded-euel ef jbe algmuejbm eu publeclj klmjl.
等等等等..(这意味着输入文本中的每个“a”都应该替换为“i”,每个“b”都应该替换为“z”等等。)(消息包含加密文本我在那里出现的文件) 现在,我的问题是如何使用“字符代码数组”来加密“消息数组”基本上不确定这是否是正确的术语但匹配和替换?任何帮助都会很棒!提前谢谢你。
【问题讨论】:
-
可能不是完整的答案,但至少将它们转换为
else ifs 或在每个块中放置一个continue,否则如果字母是“a”,它会更改为“i”并且然后在移动到下一个索引之前将“i”更改为等等。调试器应该向您展示这一点。但除此之外,肯定还有更好的方法。