I've got an assignment from school to make a program that will encrypt and decrypt a text. I have to use this declaration:
int encrypted(char *plainText, int arrLength, int key, char *cipherText);
For the moment i can make the caesar cipher work when i have the for-loop (the one i show in myfunctions.c) in main.c, but when i write the for-loop in another file (myfunctions.c) with the declaration above, it compiles and runs, but it seems like the for-loop in myfunctions.c doesn't executes like it should.
Here is my main.c:
#include <stdio.h>
#include <string.h>
#include "myfunctions.h"
int main(){
int key, arrLength, menu=0;
char plainText[100], cipherText[100], result[100];
printf("Encrypt\n");
printf("Enter your key (1-25): ");
scanf("%d", &key);
printf("Write the word or sentece you want to encrypt: ");
fgets(plainText, 100, stdin);
arrLength=strlen(plainText);
encrypted(plainText, arrLength, key, result);
getchar();
return 0;
}
myfunctions.c:
#include "myfunctions.h"
#include <stdio.h>
#include <string.h>
int encrypted(char *plainText, int arrLength, int key, char *cipherText){
int result = 0;
for(int i = 0; i < arrLength; i++)
{
// encryption
result = (*plainText + key);
// wrapping after Z for uppercase letters
if (isupper(*plainText) && (result > 'Z'))
{
result = (result - 26);
}
// wrapping after z for lowercase letters
if (islower(*plainText) && (result > 'z'))
{
result = (result - 26);
}
if (isalpha(*plainText))
{
printf("%c", result);
}
else
{
printf("%c", *plainText);
}
}
return 1;
}
myfunctions.h
#ifndef myfunctions_h
#define myfunctions_h
int encrypted(char *plainText, int arrLength, int key, char *cipherText);
#endif
plainText
in the for loop in encrypted()
. fgets()
read newline character before the plain text. Try this main
function
int main(){
int key, arrLength, menu=0;
char keyText[100],plainText[100], cipherText[100], result[100];
printf("Encrypt\n");
printf("Enter your key (1-25): ");
fgets(keyText, 100, stdin);
sscanf(keyText, "%d", &key);
printf("Write the word or sentece you want to encrypt: ");
fgets(plainText, 100, stdin);
arrLength=strlen(plainText);
encrypted(plainText, arrLength, key, result);
return 0;
}
and changing the loop for(int i = 0; i < arrLength; i++)
to for(int i = 0; i < arrLength; i++, plainText++)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.