c - 在 c 中传递的函数
问题描述
我是一名参加免费课程的初学者程序员,我在使用简单的 Meyer 加密方案来进行基于安全性的加密和解密时遇到了很多麻烦。我无法进行解密,因为我什至无法让加密工作。我们需要添加必要的提示等,以确保用户输入正确的内容。这是我的代码:
int main (void)
{
const int N = 10;
char message [N];
char processed[N];
char selection;
void encrypt_msg(char msg[],char encrypted[]);
printf("Please enter a message: ");
fgets (message, N, stdin);
printf("%s\n",message);
printf("Would you like to encrypt <E>, or decrypt <D> this message?");
scanf(" %c\n",&selection);
if (selection == 'E')
{
encrypt_msg(message,processed);
printf("%s\n",processed);
return 0;
}
if (selection != 'E')
{
printf("Invalid selection, please enter <E> or <D> ");
}
}
void encrypt_msg(char msg[],char encrypted[])
{
int i;
int NL;
for (i=0;msg[i]!='\0';i++)
{
while (msg[i]<'z'&&msg[i]>'A')
{
NL=msg[i]+i+1;
while (NL<'z')
{
NL=NL;
}
while(NL>'z')
{
NL=NL-26;
}
encrypted[i]=msg[i]+1;
}
}
}
问题是当用户输入“E”时,程序会立即进入“无效输入”的if语句,绕过实际的加密函数。它可能会做一些完全不同的事情,但我不知道,因为我很可怕。'NL' 代表新字母,即根据 MESS 键替换旧字母。
解决方案
你试过scanf("%c",&selection);
没有 '\n' 吗?
推荐阅读
- c - 条件运算符:? : 在 c 中不工作
- python-3.x - 如何在 android studio 中配置 Python 解释器
- python - 从字符串中解析格式奇怪的时间表达式
- asp.net - 在生产服务器中调用 API 时出现 404 错误
- javascript - 使用模型将对象变量数组转换为枚举
- yaml - 我想在 YAML 中执行文本格式化
- python - 将椭圆旋转角度 theta 后的椭圆与直线的交点
- docker - Docker 容器中的 .NET Core Windows 身份验证
- node.js - 在处理程序中引发错误时未调用 onPostHandler 扩展
- raspberry-pi - 强制 raspi-config 在下次启动时自动运行