加密程序ascii问题

时间:2014-04-14 04:13:50

标签: c encryption

我正在为同一个加密程序工作,对于那些看过我之前发帖的人。现在该程序将采用字母,它显示从ascii转换回字母,但这是一个问题。在我将任何计算添加到字母的值之前,它将打印正常。例如,如果我输入f,我得到102.但是,当我尝试计算时,比如将ascii值乘以选定的素数,值本身变得巨大! 这是代码:

#include<stdio.h>
int main(){
int x,y,z;
int encrypt_number[] = {7507,55529,77933,142867,392263};
printf("\tCaleb's encryption machine\n");
printf("Please enter a letter to be encrypted:\n");
scanf("%[a-z]s",&x);
printf("Enter your encryption key number between one and five\n");
scanf("%d",&y);
if (y == 1)
y = encrypt_number[0];
else if ( y == 2 )
y = encrypt_number[1];
else if ( y == 3 )
y = encrypt_number[2];
else if ( y == 4 )
y = encrypt_number[3];
else if ( y == 5 )
y = encrypt_number[4];
else
printf("not a valid option\n");
z = x*y;
printf("Your encrypted value is: %d\n",z);
printf("\tdiagnosis of encryption:\n");
printf("Letter was: %c\n",x);
printf("value in ascii was: %d\n");
}

在上面的例子中,f变为264241254!希望这只是一个简单的错误?

2 个答案:

答案 0 :(得分:2)

print

printf("value in ascii was: %d\n"); 

你只提供格式说明符%d但不传递你想要的参数print.

答案 1 :(得分:1)

您正在使用%s扫描(scanf("%[a-z]s",&x);)单个char,并将值存储在int变量中。

您可能想要

char x;
scanf("%[a-z]c",&x);

此外,最后一个printf语句缺少参数。