今週の問題セット用に Vigenère 暗号化コードを作成しようとしていますが、ほぼ完了しています。少し問題があります。キーワード char をアルファベット文字でのみシフトすることはできません。これは私のコードであり、問題を追跡できません。
GetString() はライブラリによって実装されます (scanf のようなものです) & string typedef も
int main(int argc, string argv[])
{
string keyWord;
if( argc != 2 )
{
printf("Wrong Argument");
return 1;
}
else
{
keyWord = argv[1];
//check if argument is
//only alphabetical characters
for(int i = 0; i < strlen(keyWord); i++)
{
char c = keyWord[i];
if( !isalpha(c) )
{
printf("Your Keyword Must Contain Only alphabetical characters\n");
return 1;
}
}
}
string plainText = GetString();
for(int i = 0,j = 0; i < strlen(plainText); i++,j++)
{
if(j >= strlen(keyWord))
j = 0;
char c = plainText[i];
int keyWordWrapper;
char keyC;
if(isalpha(c))
{
keyWordWrapper = j % strlen(keyWord);
keyC = keyWord[keyWordWrapper];
int key;
tolower(c);
if(islower(keyC))
key = keyC - 'a';
if(isupper(keyC))
key = keyC - 'A';
c = (c - 'a' + key) % 26 + 'a';
}
printf("%c",c);
}
printf("\n");
return 0;
}