В вашем предложении много проблем, необходимо проверить успешность ввода, вы итерируете y , а не i , вы вычисляете новый код символа, ноВы не печатаете его
Вот исправленное предложение:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char text[100];
printf("enter the plaintext:");
if (fgets(text, sizeof(text), stdin) != NULL) {
int key;
printf("enter the key: ");
if (scanf("%d", &key) == 1) {
int i;
for (i=0; text[i] != 0; ++i)
{
if (isalpha(text[i]))
putchar(text[i] + key); /* may not be printable */
else
putchar(text[i]);
}
}
}
return 0;
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra c.c
pi@raspberrypi:/tmp $ ./a.out
enter the plaintext:the sentence to encode
enter the key: 3
wkh vhqwhqfh wr hqfrgh
pi@raspberrypi:/tmp $ ./a.out
enter the plaintext:Alea jacta est
enter the key: 2
Cngc lcevc guv
Для забавы, 32 не очень хороший ключ ккодировать заглавные буквы:
pi@raspberrypi:/tmp $ ./a.out
enter the plaintext:THE FIVE BOXING WIZARDS JUMP QUICKLY.
enter the key: 32
the five boxing wizards jump quickly.