SoloCodigo
		Programación General => C/C++ => Mensaje iniciado por: delpa en Miércoles 20 de Febrero de 2002, 21:02
		
			
			- 
				Cuando paso algunpuntero a una funcion me salen varioos warning y para que me funcione tengo que ir probando paso a paso hasta que sale por casulaidad
ahi va el codigo si os aburris podeis indicadme los fallos, por cierto que compilador usais normalmente??
Muchas gracias.
#include <stdio.h>
#include <conio.h>
#include <string.h>
char encriptacion (char *);
void main (void){
   char *mens;
   int i,longitud,aux;
   clrscr();
   printf("Escriba el mensaje que quiere encriptar:");
   printf("Escribalo y al final pulse enter ");
   scanf("%[^n]",mens);
   longitud=strlen(mens);
/* aqui imprimo lo que meti antes*/
   for(i=0;i!=longitud;i++){
     printf("%c",mens);
   }
   getch();
   clrscr();
   printf("La frase encriptada es");
/*ahora utilizo la funcion de encriptacion*/
   mens=ecriptacion(&mens);
   for(i=0;i!=longitud;i++){
     printf("%c",mens);
   }
   getch();
}
char encriptacion (char *mensaje){
   char *mensaje;
   int i,longitud,aux;
   longitud=strlen(mensaje);
   for(i=0;i!=longitud;i++){
     aux=(int) mensaje;
     aux=aux+i*2;
     mensaje=(char) aux;
   }
			 
			
			- 
				vaya a la funcion le falta la llave que debia cerrarla pero eso a sido al copiar el texto jejejeje
			
 
			
			- 
				Lo único que he visto es esto:
   mens=ecriptacion(&mens);
mens es un puntero por lo que no tienes que poner el operador &. Además el retorno de la funcion en un char y no un puntero a char.
			 
			
			- 
				Hola. O no me he enterado del codigo o la cosa está muy mal.
1 - Si quieres imprimir el texto, no pongas:
    for(i=0;i!=longitud;i++){
        printf("%c",mens);
    }
...sinó:
    printf ("%sn",mens);
2 - jpastor tiene razón, si la función encriptation espera un *char ¿porque le pasas un **char? 
3 - Respecto al valor de retorno, te aconsejo que lo pongas a void y dejes la función como
    void encriptation (char *mensaje);
... ya que estas cambiando el valor del parametro de entrada dentro de la función, este es tambiñen de salida. la llamada en el main hazla así:
    encriptation (mensaje);
Espero haber ayudado.
			 
			
			- 
				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]
			 
			
			- 
				Muchas gracias esto me sirve para aclarar conceptos basicos, ya que no he estudiado programacion de forma sistematica
			
 
			
			- 
				weno tome tu codigo y arregle un par de cositas alli
espero q sea lo que necesitabas
saludos
(http://www.geocities.com/satyr6six6/satyr00.jpg)