问题描述
#include <stdio.h>
/*************** CAESAR CYPHER *****************
-Take a charater array input
-Loop through 26 character shifts
-Print all possibilities
************************************************/
void Brute_Force(char *message)// Character array pointer
{
char *i;// copy message for iteration: Stop at '/0'
int j;// Iterate through the alphabet
char t;//Temp variable for current letter
for(j = 0; j < 26; j++)
{
printf("\n----------Shift %i----------\n",j);//Aesthetics
for(i = message; *i != '\0'; i++)
{
//Multiple of 26 to start at original message
unsigned char t = ((*i + j)%26) + 104;
// Only loop 97 to 122. ASCII 'a'-'z'
if(t > 122){t = t - 26;}
printf("%c",t);
}
}
}
int main()
{
char mess[26] = "ynkooejcpdanqxeykjrbdofgkq";
Brute_Force(mess);
return 0;
}
在将 t
更改为 unsigned char
而不是常规的 char
之前,每次出现 'f'(102) 或 'g'(103) 时,它都会输出 { {1}} 而不是 t = -127/-128
。我只是想知道是什么导致它变成负面的。仅适用于 'f' 和 'g',其他所有字母都是正确的。
示例输出为:
127/128
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)