[英]Printing result of Caesar cipher program
我正在尝试在打印加密邮件之前添加"Encrypted message: "
。
当我将printf
语句放入“ while”循环中时,我得到了AEncrypred message: BEncrypted message: CEncrypted message:
等。
如果我尝试将printf
语句放在循环外,则不会输出任何内容。
有没有办法在仍然使用putchar();
在结果之前打印"Encrypted message: "
putchar();
?
#include <stdio.h>
#include <ctype.h>
char encrypt(char in, int key)
{
if (isalpha(in))
{
if (isupper(in))
{
return (((in-'A') + key) % 26) + 'A';
}
else
{
return (((in-'a') + key) % 26) + 'a';
}
}
else return in;
}
int main()
{
int key;
char ch, res;
printf("Enter shift amount (1-25):\n");
scanf("%d", &key);
printf("Enter message to be encrypted:\n");
getchar();
while (ch != '\n')
{
ch = getchar();
res = encrypt(ch, key);
putchar(res);
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
char encrypt(char in, int key)
{
if (isalpha(in))
{
if (isupper(in))
{
return (((in-'A') + key) % 26) + 'A';
}
else
{
return (((in-'a') + key) % 26) + 'a';
}
}
else return in;
}
int main()
{
int key;
char ch, res;
int checksum = 1;
printf("Enter shift amount (1-25):\n");
scanf("%d", &key);
printf("Enter message to be encrypted:\n");
getchar();
while (ch != '\n')
{
ch = getchar();
res = encrypt(ch, key);
if(checksum) { checksum = 0; printf("Encrypted message: "); }
putchar(res);
}
return 0;
}
我会用那种方式。 如果您不喜欢它,请告诉我。 我只是以不违反您的代码结构的方式解决了它。
您的问题是将printf
语句放入循环中。 该循环将解析您的printf
语句? ,直到ch
等于新行。 为防止您可以在范围之外使用变量,并使用例如1
的值进行初始化。 要解析printf
语句,请在条件为该变量等于它的数字后再为其分配0或另一个数字。 因此,在下一次必须解析printf
,它将不会继续,因为条件将为false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.