シーザー・サイファーは、ユーザーが解説したキーとテキストでテキストを暗号化します。私のバージョンのシーザー暗号で何が間違っていますか? pset 2
シーザー暗号、シーザー暗号、シーザー符号またはシーザーシフトとも呼ばれるシーザー暗号は、最も簡単で最も広く知られている暗号化技術の1つです。これは、平文の各文字が、アルファベットの下のある一定数の位置の文字に置き換えられる代替暗号の一種です。たとえば、左シフトが3の場合、DはAに置き換えられ、EはBになります。この方法は、
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
int main (int argc , string argv[])
{
int key,save;
string s ;
key = atoi(argv[1]);
s = GetString();
if ( argc != 2)
{
printf("prgram is yelling at you !!");
return 1 ;
}
for (int i = 0 ; s[i]!='\0' ; ++i) // manipulation without storing character
{
if (isalpha(s[i])) // checks whether input is in character set or not
{
if (islower (s[i])) // FOR LOWER CASES
{
save = key % 24 ;
s[i] = s[i] + save ;
if (s[i] > 'z')
s[i] = 'a' + (s[i] - 'z' -1);
}
if (isupper (s[i])) // FOR UPPER CASES
{
save = key % 24 ;
s[i] = s[i] + save ;
if (s[i] > 'Z')
s[i] = 'A' + (s[i] - 'Z' -1);
}
}
printf ("%c" , s[i]);
}
return 0 ;
}
な事実彼の私信でそれを使用ジュリアス・シーザー、にちなんで命名されています
:) caesar.c exists
:) caesar.c compiles
:(encrypts "a" as "b" using 1 a s key
\ expected output, but not "b"
:(encrypts "barfoo" as "yxocll" using 23 as key
\ expected output, but not "yxc"
:(encrypts "BARFOO" as "EDUIRR" using 3 as key
\ expected output, but not "EDUIRR"
:(encrypts "BaRFoo" as "FeVJss" using 4 as key
\ expected output, but not "FeVJss"
:(encrypts "barfoo" as "onesbb" using 65 as key
\ expected output, but not "srw"
:(encrypts "world, say hello!" as "iadxp, emk tqxxa!" using 12 as key
\ expected output, but not "adxp, em tqxxa!"
:(handles lack of argv[1]
\ expected output, not standard error of \ "/opt/sandbox50/bin/run.sh: line 31: 189..."
を開始するにはあなたのプログラムのフォーマットが間違っている、あなたのプログラムが読めない。 –
私はあなたのためのコードを読みやすい形式にフォーマットしました。 –
これはいくつかのテストサーバー上の問題のコピー貼り付けのようです。とにかく - 素晴らしい紹介ですが、実際の質問は、おそらくあなたはまだ質問を考えています:D – nayana