Ich habe zwei Dinge für pset2 ein Caesar Cipher Encryptor und Decryptor erstellt. Mein Verschlüssler funktioniert und er heißt caesar.c, aber mein Decryptor (decryptor.c) funktioniert nicht und ich kann nicht herausfinden warum? Hier ist mein Code.Mein Decryptor funktioniert nicht
Caesar.c
#include <cs50.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "encryptorFunction.c"
int main(int argc, string argv[]) {
//checks for enough args
if (argc >= 2) {
//converts the second arg to an integer
int k = atoi(argv[1]);
string stringToBeEncrypted = GetString();
printf("%s\n", encryptor(stringToBeEncrypted, k));
} else {
printf("Please add a key argument\n");
return 1;
}
}
Decryptor.c
#include <cs50.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include "encryptorFunction.c"
// almost same as caesar
int main(void) {
const string stringToBeEncrypted = GetString();
// string stringToBeEncrypted = GetString();
//checks all possible decryptions
for(int k=1;k<26;k++) {
printf("%s\n", encryptor(stringToBeEncrypted, k));
}
}
encryptorFunction.c
#include <cs50.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
string encryptor(string encryptString, int key) {
//loops through every character
string encryptStringCopy = encryptString;
for (int i = 0, n = strlen(encryptStringCopy); i < n; i++) {
//converts the specific char to its ascii value
int ascii = (int) encryptStringCopy[i];
//makes key 31 is the same as key 5
key = key % 26;
//checks if it is an alphabetical letter
if (isalpha(encryptStringCopy[i])) {
//checks if lowercase
if (islower(encryptStringCopy[i])) {
//handles the corner case of being z since 26 % 26 is not 26 it's 0
if ((ascii-96+key) == 26) {
ascii = 122;
}else {
//takes the lowercase alphabetical numbers to the 1-26 alphabet then checks mod 26 to cycle back and adds it back.
ascii = ((ascii-96+key) % 26) + 96;
}
//else part is for uppercase case
}else {
//same logic as above
if ((ascii-64+key) == 26) {
ascii = 90;
}else {
ascii = ((ascii-64+key) % 26) + 64;
}
}
}
//converts the ascii back to a char
char newChar = (char) ascii;
//sets the new char into the string
encryptStringCopy[i] = newChar;
}
return encryptStringCopy;
}
Haben Sie wirklich die Code-Datei beabsichtigen 'Decryptor.c' die Funktion' Verschlüssler() 'zu nennen, die gleiche Funktion, die in 'Caesar.c' aufgerufen wird? –
Ja, so entschlüsselt es. –
Können Sie sehen, was damit nicht stimmt? –