El código es exactamente igual, puede que esté relacionado con la configuración de la consola. Supón que en la consola tienes configurado que como máximo se muestren por pantalla 50 líneas y que todo lo demás lo corta... El caso es que a mí me sale bien. Te comento las partes del programa:
#include <stdio.h> //Carga de las librerías para que se puedan usar las funciones
#include <stdlib.h> // básicas de petición de datos e imprimir por pantalla
#include <string.h> // Carga de la librería específica para usar funciones propias
// de cadenas
//Para poder usar funciones hemos de cargar las librerías donde estas funciones están
// contenidas. La carga de funciones se indica con include <nombreDelArchivoLibreria>
// Declaramos el procedimiento principal a ejecutar por el programa, int indica que el
//tipo de retorno será un entero y main que es la función principal. () indica que no
// tiene argumentos.
int main(){
//Declaramos variables de tipo entero: encrip e i
int encrip;
int i;
//Declaramos los tipo array o arreglo de caracteres, con un máximo de 40 caracteres
//permitidos para una cadena o una cadena encriptada
typedef char TipoCadena[40];
typedef char TipoCadEncriptada[40];
// Creamos las variables del tipo array o arreglo que hemos definido anteriormente
TipoCadena cadena;
TipoCadEncriptada cadenaEncriptada;
// Inicializamos variables con contenido inicial igual a cero
encrip=0;
i=0;
//Mostramos el mensaje de solicitud del texto, \n indica salto de línea y retorno de carro
printf("ingrese el texto a encriptar \n");
//Petición de datos al usuario con la función scanf. %s significa que se pide una
// cadena de texto y cadena es el nombre de la variable donde se va a guardar. & indica
// que la variable cadena pasa por referencia a la función
scanf("%s",&cadena);
//Mostramos el número de caracteres que tiene la cadena, para ello nos valemos
// de la función strlen(x) que devuelve el número de caracteres de una cadena
printf("El numero de caracteres en la cadena es %d \n",strlen(cadena));
//Creamos un bucle con el que recorremos la cadena introducida. La variable índice
// del bucle es i.
do {
// Mostramos el caracter en posición i en la cadena empezando por cero
// %c indica que ahí insertamos un caracter y %d que ahí insertamos un número
// cadena[ i ] es el elemento del array o arreglo que contiene un caracter, el que insertamos
//int(cadena[ i ]) devuelve el número entero equivalente al caracter según el alfabeto ascii
// en ascii cada letra tiene un número asociado
printf("Caracter extraido: %c con valor ascii %d \n",cadena[ i ], int(cadena[ i ]));
// Asignamos a la variable encrip el número asociado al caracter más dos unidades
// por ejemplo a la a le corresponderá el número de la c, a la d el nº de la f, etc.
encrip = int(cadena[ i ]) +2;
//char(x) representa el caracter asociado a un número x, lo que hacemos es
//meter dentro del array cadenaEncriptada el caracter que toque, en posición i
cadenaEncriptada[ i ] = char(encrip);
//Mostramos el caracter encriptado, la letra y su número asociado
printf("Caracter encriptado: %c con valor ascii %d \n",cadenaEncriptada[ i ], int(cadenaEncriptada[ i ]));
//Avanzamos el contador en una unidad, con lo que pasamos a la siguiente letra de la cadena
i=i+1;
// Condición para repetir el bucle: el bucle se repite si i es menor que la longitud de la
// cadena. Por ejemplo si la cadena es pan la longitud es 3 y el bucle se repite si i vale 0, 1 o 2 pero no cuando vale 3
} while (i < strlen(cadena));
//Mensaje avisando de que vamos a mostrar el texto encriptado
printf("El texto encriptado es ");
//Bucle para recorrer el array o arreglo y mostrar caracter a caracter la cadena encriptada
//El bucle usa como índice j y va desde cero hasta la longitud de la cadena, que es la
// misma longitud que la cadena encriptada
for (int j=0; j<strlen(cadena); j++) {
//Mostramos la cadena encriptada caracter a caracter
printf("%c", cadenaEncriptada[ j ]);
}
//La función main devuelve cero, esto es un formalismo
return 0;
}