0

文字列キーを使用してプレーンテキストを暗号化しようとしています。とにかく、プレーンテキストがキーよりも大きい場合、キーはキーを使用し続けると想定されます..モジュロを使用してキーを最初からやり直しましたが、何らかの理由で機能しません...コードの何が問題なのですか? ちなみにキーステータスの上下限は関係ないので下に変更。レンダリングされたヘルプをいただければ幸いです。//コードは提案どおりにクリーンアップされました。

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include<stdlib.h>
#include<ctype.h>

int main (int argc, string argv[])

{


if (argc != 2)
{

  printf("Ouch missing key\n");

return 1;
}

//get encryption keyword from argv array
string k= (argv[1]); 

//test for non aplha character in plain text message

int x;

for (x = 0; x <strlen(argv[1]); x++)
        {

    if(isalpha(k[x]) == false)

        {
printf("Ouch ensure value is alphabetical only\n");

return 1;

        }
  }

string m;


m = GetString(); //get plain text from prompt


for (int i= 0, j = 0; i< strlen(m) && j<= strlen(k); i++, j++)


{

    if (

        isalpha(m[i]) && isupper(m[i]))

            {

                m[i]= (m[i]-'a' + (tolower(k[j % strlen(k)])-'a')) % 26 + 'A';

            } 

    else if (

        isalpha(m[i]) && islower(m[i])

        )
            { 

           m[i] = (m[i] - 'a' + (tolower(k[j %strlen(k)])- 'a')) % 26 + 'a';


            }

    else 
         m[i] = m[i];
}

printf("%s\n", m);

}
4

2 に答える 2