Kod v to 118. Gdy dodasz do niego 10 to daje 128, a pojemność chara może być albo 0 do 255 albo -127 do 127. Sugeruje to, że u Ciebie jest do 127 i przy 128 przeskakuje na -127. Potem wyświetlasz -127 jako char, co daje jakieś dziwne rzeczy.
Wyedytowałem Twój kod tak, żebyś sam zobaczył co się dzieje. Debugowanie printfami zawsze spoko.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <climits>
void szyfr(int klucz, char ciag[], int dlugosc)
{
int i = 0;
for (i = 0; i < dlugosc; i++)
{
printf("edytuje %c %d\n",ciag[i],ciag[i]);
ciag[i] = ciag[i] + klucz;
printf("po dodaniu %c %d\n", ciag[i], ciag[i]);
if (ciag[i] > 122)
{
ciag[i] = ciag[i] - 26;
printf("przesuniety %c %d\n", ciag[i], ciag[i]);
}
else printf("bez przesuniecia %c %d\n", ciag[i], ciag[i]);
printf("\n\n");
}
}
int main()
{
printf("min char: %d; max char: %d\n", CHAR_MIN, CHAR_MAX);
int i = 0, klucz = 10, dlugosc = 5;
char ciag[10];
for (i = 0; i < dlugosc; i++)
{
scanf("%c", &ciag[i]);
}
szyfr(klucz, ciag, dlugosc);
_getch();
return 0;
}