• Martes 5 de Noviembre de 2024, 09:34

Autor Tema:  Re: paso de punteros a funciones  (Leído 2668 veces)

delpa

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: paso de punteros a funciones
« en: Miércoles 20 de Febrero de 2002, 21:02 »
0
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;
   }

delpa

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #1 en: Miércoles 20 de Febrero de 2002, 21:04 »
0
vaya a la funcion le falta la llave que debia cerrarla pero eso a sido al copiar el texto jejejeje

jpastor

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #2 en: Miércoles 20 de Febrero de 2002, 21:35 »
0
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.

bob

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #3 en: Viernes 22 de Febrero de 2002, 00:36 »
0
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.

bench

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #4 en: Sábado 23 de Febrero de 2002, 00:48 »
0
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]

delpa

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #5 en: Sábado 23 de Febrero de 2002, 12:59 »
0
Muchas gracias esto me sirve para aclarar conceptos basicos, ya que no he estudiado programacion de forma sistematica

Satyr

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
paso de punteros a funciones
« Respuesta #6 en: Viernes 24 de Enero de 2003, 05:32 »
0
weno tome tu codigo y arregle un par de cositas alli

espero q sea lo que necesitabas

saludos


El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.