Szyfr cezara czyste C

0

Witam mam problem z szyfrem cezara niby wszystko działa ale czasami na koncu szyfru program dodaje jakies dziwne znaczki mimo iz szyfruje dobrze proszę o pomoc.

#include <stdio.h>
#include <string.h>
int main()
{
    int przesuniecie;
    char znaki[100], szyfr[100];
    printf("Podaj tekst do zaszyfrowania \n");
    scanf ("%[^\n]%*c", znaki);
    fflush(stdin);

    printf("Podaj przesuniecie\n");
    scanf("%i", &przesuniecie);
    fflush(stdin);



    for(int i =0; i<strlen(znaki); i++){
        if(znaki[i]==' '){
            szyfr[i]= znaki[i];
            continue;
        }
        if(znaki[i]+przesuniecie>90)
            szyfr[i] = znaki[i]+przesuniecie-26;
        else
            szyfr[i] = znaki[i]+przesuniecie;
    }
    printf("%s\n", szyfr);
    return 0;
}

0

else co jeżeli znak jest "z"(122) a przesuniecie to 3

0

dziel to na mniejsze funkcje, będzie łatwiej:

char Cezar(char ch, int shift)
{
     shift = (shift + 26) % 26;
     if (isupper(ch)) {
          return … ;
     }
     if (islower(ch)) {
          return … ;
     }
    return ch;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1