我打算在打印加密邮件之前添加"Encrypted message: "
。
当我将printf
语句放入"而#34;循环,我得到的东西:
AEncrypred message: BEncrypted message: CEncrypted message:
等。
如果我尝试将printf
语句放在循环之外,则不会打印任何内容。
在使用"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;
}
答案 0 :(得分: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
时,它不会去,因为条件将是错误的。