Creo Que la Falla La Tienes en el Concepto
de Punteros. Espero que Te sirva La Sugerencias en el codigo
#include <stdio.h>
#include <conio.h>
#include <string.h>
char encriptacion (char *);
void main (void)
{
/***************************
FALTA INICIALIZAR EL PUNTERO
***************************/
char *mens = NULL;
int i,longitud,aux;
clrscr();
printf("Escriba el mensaje que quiere encriptar:");
printf("Escribalo y al final pulse enter ");
/**********************
Inicalizar El Puntero Por Ejemplo Con la
Funcion malloc
***************************************/
mens = malloc(512);/*buffer de 512 bytes*/
if (!mens)
{
perror("Error en la Asignacion de memoria");
exit(0);
}
/*********************
Inicializar el Buffer: Con "/0"
******************************/
i = 0;
while(i<512) mens[i++]= 0x00;
/***
No Recuerdo la Funcion Coloca
El "/0" de Fin de Streen Verificar
*********************************/
scanf("%[^n]",mens);
longitud=strlen(mens);
/* aqui imprimo lo que meti antes*/
/****
Si Desea Imprimir el Estreen Byte a byte
La Impresion Para al Encontrar "/0"
***************************************/
for(i = 0; mens; i++)
{
/***
Se Rompe Si Se Recibirieron mas de 512
*************************************/
if(i == 512); break
printf("%c",mens);
}
getch();
clrscr();
printf("La frase encriptada es");
/*ahora utilizo la funcion de encriptacion*/
mens = ecriptacion(mens);/* Elimine & */
for(i = 0; mens; i++)
{
/***
Se Rompe Si Se Recibirieron mas de 512
*************************************/
if(i == 512); break
printf("%c",mens);
}
getch();
} /* Fin del Programa Principal */
void encriptacion (char *mensaje)
{
char *mensaje;
int i,longitud,aux;
longitud = strlen(mensaje);
/***
Creo Que lo Que Esta Tratando de Encriptar
Es el Valor Ascci+la Pos *2 lo que es incorecto Por Que Desborda la Cap de un char
*****************************************/
for(i=0;i!=longitud;i++){
aux=(int) mensaje; /* Guarda el lvalue */
aux=aux+i*2;
mensaje=(char) aux;
/***
Sugiero Un Algoritmo Por Ej.
***************************/
for(i = 0; mens; i++)
{
/***
Se Rompe Si Se Recibirieron mas de 512
*************************************/
if(i == 512); break
aux = (mens+ i)* 2;
if(aux < 256)mens = aux;
else
{
/***
Considerar Que En una Variable
Tipo Char No SE Puede Exeder de 255
Por Ejemplo:
**********************************/
mens+= 2;
}
} /* Fin del For */
} /* Fin de la Funcion */
[Modificado el 2/22/02 por bench]
[Modificado el 2/23/02 por bench]
[Modificado el 2/23/02 por bench]