使用Caesar'加密文本;s密码
我正在编写这个C程序,它接受一个命令行参数,然后加密用户稍后输入的文本 我们通过用于加密的命令行输入一个数字。例如,如果我们从命令行输入一个数字1,然后用户想要加密,比如说“aaaa”,加密的文本将是“bbbb”,只是每个文本都移动了一个字符。我完成了输出,但没有打印回文本。我犯了什么错 这是我的密码使用Caesar'加密文本;s密码,c,algorithm,encryption,C,Algorithm,Encryption,我正在编写这个C程序,它接受一个命令行参数,然后加密用户稍后输入的文本 我们通过用于加密的命令行输入一个数字。例如,如果我们从命令行输入一个数字1,然后用户想要加密,比如说“aaaa”,加密的文本将是“bbbb”,只是每个文本都移动了一个字符。我完成了输出,但没有打印回文本。我犯了什么错 这是我的密码 int main(int argc , string argv[]) { if(argc != 2) { return -1;
int main(int argc , string argv[])
{
if(argc != 2)
{
return -1;
}
int k = atoi(argv[1]);
printf("Enter the text to be encrypted : ");
string text = get_string();
int length = strlen(text);
for(int i=0 ; i<length ; i++)
{
int p = text[i];
int c = (p + k) % 26;
printf("%c",c);
}
}
intmain(intargc,字符串argv[])
{
如果(argc!=2)
{
返回-1;
}
int k=atoi(argv[1]);
printf(“输入要加密的文本:”);
字符串文本=获取字符串();
int length=strlen(文本);
对于(int i=0;i此代码:
int c = (p + k) % 26;
printf("%c",c);
很可能不会打印任何有价值的内容,因为结果值将在0..25范围内,ASCII中的值是不同的控制字符。您要做的是检查字符是ASCII小写还是ASCII大写,然后进行旋转,并确保结果也在同一范围内:
unsigned int c = text[i];
if (c >= 'A' && c <= 'Z') {
c = ((c - 'A') + k) % 26 + 'A';
}
else if (c >= 'a' && c <= 'z') {
c = ((c - 'a') + k) % 26 + 'a';
}
printf("%c", c);
unsigned int c=text[i];
如果(c>='A'&&c='A'&&c此代码在此处:
int c = (p + k) % 26;
printf("%c",c);
很可能不会打印任何有价值的内容,因为结果值将在0..25范围内,ASCII中的值是不同的控制字符。您要做的是检查字符是ASCII小写还是ASCII大写,然后进行旋转,并确保结果也在同一范围内:
unsigned int c = text[i];
if (c >= 'A' && c <= 'Z') {
c = ((c - 'A') + k) % 26 + 'A';
}
else if (c >= 'a' && c <= 'z') {
c = ((c - 'a') + k) % 26 + 'a';
}
printf("%c", c);
unsigned int c=text[i];
如果(c>='A'&&c='A'&&c是string
char*
的类型定义,或者什么?请将代码添加到question@AnttiHaapala-是的。是反模式培养的凯瑟斯?我想它的拼写是“剪刀”。你只需要把你的文本和他们一起浏览几遍,尽可能彻底。我不相信哈佛大学会教这个:Disstring
a typedef forchar*
,或者什么?你能把代码添加到get\u string()中吗
将功能添加到您的question@AnttiHaapala-是的。这是反模式培养的凯瑟斯?我想它的拼写是“剪刀”。你只是用它们把你的文本浏览了好几遍,尽可能彻底。我不相信他们在哈佛教这个:你的代码不起作用,兄弟。对于1和文本aaaa的键,输出是{{{{@StoryTeller是的,修复了。你的代码不起作用,兄弟。对于键1和文本aaaa,输出是{{{{@StoryTeller是的,修复了。