Secondo me faresti prima ad allocarti un vettore di un tot di caratteri salvandoti il k-esimo carattere successivo a quello immesso. Intendo una cosa del genere:
codice:
int main (void)
{
int c, k, i;
char *cifr;
printf("Inserisci chiave di cifratura: ");
scanf("%d", &k);
printf("Inserisci testo da cifrare!!\n");
cifr = (char*) malloc(2048*sizeof(char));
i=0;
while ((c = getchar()) != '.'){
cifr[i] = (c+k);
i++;
}
printf("%s\n",cifr);
return 0;
}
cifr contiene la stringa già cifrata. Occhio perchè manca il controllo sulla lunghezza della chiave: quando arrivi alla 'z' devi tornare indietro, questo va gestito.