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)