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.