私はVigenere CipherをCで作成しようとしています。https://www.youtube.com/watch?v=9zASwVoshiMこれはVigenere Cipherに関する情報です。私のコードは暗号化のような特定のケースでは動作しません "世界、こんにちは! "xoqmd、rby gflkp!"と表示されます。代わりにキーワードとして "baz"を使用し、それをxomd、szz flとして暗号化します。もう一つの例は: は "BaZ"をキーワードとして "CaQGon"として "BaRFoo"を暗号化しますが、代わりにCakGoとして暗号化します。私のコードは、私を助けてください以下の通りである:Vigenere Cipher
#include<stdio.h>
#include<cs50.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, string argv[]) {
//string plaintext;
string key;
if (argc != 2) {
printf("Please run the programme again this time using a command line argument!\n");
return 1;
}
key = argv[1];
int keys[strlen(key)];
for (int m = 0; m< strlen(key); m++) {
if (isalpha(key[m]) == false) {
printf("Re-Run The programme without any symbols.\n");
return 1;
}
}
for (int b = 0; b < strlen(key); b++) {
if (isupper(key[b]) == false) {
keys[b] = key[b] - 'a';
}
else {
keys[b] = key[b] - 'A';
}
}
//printf("Enter a string which should be encrypted: \n");
string plaintext = GetString();
int plength = strlen(plaintext);
int klength = strlen(key);
string ciphertext = key;
for (int u = 0; u<plength; u++) {
if (isalpha(plaintext[u]) == false) {
printf("%c", plaintext[u]);
continue;
}
int value = u % klength;
ciphertext[u] = (keys[value] + plaintext[u]);
if ((islower(plaintext[u])) && (ciphertext[u])>'z') {
ciphertext[u] = ciphertext[u] - 'z' + 'a' - 1;
}
if ((isupper(plaintext[u])) && (ciphertext[u])>'z') {
ciphertext[u] = ciphertext[u] - 'Z' + 'A' - 1;
}
printf("%c", ciphertext[u]);
}
printf("\n");
return 0;
}
1)'文字列暗号文=キーとして "BaRFooを" 暗号化キー "バズ" と(isupper(plaintext [u]))&&(暗号文[u])> 'z'){' - >' if(isupper(plaintext [u] )&&暗号文[u]> 'Z'){' – BLUEPIXY
インデントはあなたの友人です。 –