Я пишу шифр Цезаря, который сдвигает значение каждого символа в массиве на заданную величину.У меня проблема в том, что значения символов после моей строки также сдвигаются. Я надеюсь полностью игнорировать эти значения / не печатать их.
У меня есть следующее, которое компилируется ниже, но я не могу думать о том, как также не анализировать конечные символы.Моя функция шифрования должна принимать эти точные параметры, поэтому я также не могу передать ей длину.
#include <stdio.h>
void encrypt(char *message, int shift);
int main(void)
{
int shift_amount;
int length;
char message[80];
char c;
printf("Enter message to be encrypted: ");
for (length = 0; ( c = getchar()) != '\n'; length++) {
message[length] = c;
}
printf("Enter shift amount (1-25): ");
scanf("%d", &shift_amount);
encrypt(message, 3);
return 0;
}
void encrypt(char *message, int shift){
printf("Encrypted message: ");
for (int i = 0; i < 80; i++) {
char ch = message[i];
if (message[i] >= 'a' && message[i] <= 'z') {
ch = (( ch - 'a' ) + shift) % 26 + 'a';
} else if (message[i] >= 'A' && message[i] <= 'Z') {
ch = (( ch - 'A' ) + shift) % 26 + 'A';
}
printf("%c", ch);
}
printf("\n");
}
Желаемый пример ввода / вывода будет:
вход: "Давай, сделай мой день."со смещением 3
вывод: "Jr dkhdg, pdnh pb gdb."
Спасибо!