Cuando el contenido es una letra en inglés, las siguientes tres letras entre las 26 letras reemplazan la letra. Si la letra de reemplazo excede la z, las letras rotarán desde a, b... y otros caracteres.
#include?lt;stdio.hgt;
#include?lt;string.hgt;
#include?lt;stdlib.hgt; p>
p>
/* *?Función de cifrado*?src?-?Cadena a cifrar*?outbuf?-?Búfer de salida cifrado, el tamaño del búfer no está verificado y se necesita espacio suficiente para asignarse en el sitio de llamada*? Devuelve ?-? Si el cifrado se realiza correctamente, devuelve la longitud de la cadena cifrada. Si falla, devuelve ?-1 */
int?encode(const. ?char?*src, ?char?*?outbuf, ?int? bufsize)
{
int?i?=?0;
while( *src)
{
if(i?gt;=?bufsize?-?1)?//El búfer finalmente necesita un espacio de bytes adicional para almacenar el terminador de cadena '\ 0'
{
printf("¡Desbordamiento del buffer de salida!\r\n");
return?-1;
}
if(*src?gt;=? 'a'?amp;amp;?*src?lt;=?'z')//Si es una letra minúscula, realice la siguiente conversión
{
outbuf[i]? =?(*src?-?'a'? ?1)26?'a';
outbuf [i ]?=?(*src?-?'a'? ?2)26 ?'a';
outbuf[i ]?=?(*src?-?'a'? ?3)26? ?'a';
} p>
else?if(?*src?gt;=?'A'?amp;amp;?*src?lt ;=?'Z')//Si es una letra mayúscula, haz la siguiente conversión
{
outbuf[i ]?=?(*src?-?'A '? ?1)26? ?'A';
outbuf[i ] ?=?(*src?-?'A'? ?2)26?
outbuf[i ]?=?(*src?-?'A'? ?3) 26?'A';
}
else//Si es así hay otros caracteres, envíelos como están
{
outbuf[i] ?=?*src;
}
src ;
}
//Agregar terminador de cadena '\0'
outbuf[i ]?=?'\0';
///? La codificación es exitosa, devuelve la longitud de la cadena codificada
return?i
}
int?main(const?int?argc, ?const?char?*argv[])
{
char?test_str
[100]?=?{0};
char?*outbuf?=?NULL;
int?buf_size?=?0;
printf( "Ingrese la cadena a cifrar (menos de 100 caracteres):\r\n");
scanf("s",?amp; test_str);
buf_size? =?strlen(test_str)*sizeof(char)*3? ?1; //'1' es para asignar espacio adicional a '\0', '*3' garantiza que la asignación sea suficiente espacio
//Aplicación Espacio suficiente para almacenar la cadena cifrada
outbuf?=?(char?*)?malloc(buf_size);
if(outbuf?==?NULL)
{
printf("¡No se pudo solicitar el espacio! \r\n");
return?-1;
printf("Cifrando...");
if(encode(test_str,?outbuf,?buf_size)?lt;?0)
{
printf("¡Error de cifrado!\r\n");
free(outbuf
return?-1; > }
else
{
printf("Completo.\r\n"); p> printf ("Cadena cifrada: s\r\n",?outbuf);
//Libera el espacio solicitado por malloc
free(outbuf);
devolver?0;
}