Programación General => C/C++ => Mensaje iniciado por: cyberday en Martes 30 de Noviembre de 2010, 05:35
Título: Problemas como pasar char por referencia
Publicado por: cyberday en Martes 30 de Noviembre de 2010, 05:35
Hola a todos, tengo este código y me da error de "incompatible pointer type" y no se por que (estoy usando el & para pasar la frase por referencia)
void encriptar(char *frase[], int longitud, int n) { int i,j,pos,encontrado; char abc[27]="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"; for (i=1;i<=longitud;i++) { if (*frase != ' ') { j=1; encontrado=0; while (j<=27 && encontrado==0) { if (*frase == abc[j]) { pos=j+n; encontrado=1; if (pos > 27) pos = pos - 27; *frase=abc[pos]; } j++; } } } printf("Frase Codificada: %s n",frase);
}
main() { char frase[50]; int i,n,longitud; printf("Indica frase a encriptar"); gets(frase); longitud = strlen(frase); printf("Indica numero de caracteres hacia adelante"); scanf("%d",&n); encriptar(&[/quote]frase,longitud,n); system("pause"); }
Título: Re: Problemas como pasar char por referencia
Publicado por: alb en Martes 30 de Noviembre de 2010, 07:15
Holà, Para pasa un pointer de una arrray, hubiera sido :
Lueog es impide que lo utilizes asì : (*frase). Por ejemplo :
Código: C
if((*frase)[i]!=' ')
Pero me parece que no sirve a nada de pasarlò como lo haces. Esto es suficiente :
Código: C
void encriptar(char frase[50],int longitud,int n)
llamando la funcion :
Código: C
encriptar(frase,longitud,n);
main no tiene forma correcta. Debrìa ser :
Código: C++
int main(void)
o
Código: C++
int main(int argc, char*argv[])
Una cadena de caracter se termina por ' '. Asi abc no tiene 27 sino 28 caracteres. Però, lo mejor es dejar el compilador calcularlo solo :
Código: C
char abc[]="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
constsize_t abc_len =sizeof(abc)/sizeof(abc[1]);
Las bucles de vectores no se hacen de 1 hasta Length, pero empezan con 0. Asì que debria ser :
Código: C
for(i=0;i<longitud;i++)
y
Código: C
j=0; encontrado=0;
while(j<27&& encontrado==0)
Título: Re: Problemas como pasar char por referencia
Publicado por: m0skit0 en Martes 30 de Noviembre de 2010, 09:27
char[] es ya un puntero. No necesitas pasar char*[], que es un puntero de punteros a char. Si lo que quieres es modificar el array en la función y que se mantengan los cambios, con pasarlo como char[] te vale. Es decir:
Código: C
void encriptar(char frase[],int longitud,int n)
Con esto vas sobrado. Y ojo con los tamaños de los arrays como te indica alb.
Saludos
Título: Re: Problemas como pasar char por referencia
Publicado por: cyberday en Miércoles 1 de Diciembre de 2010, 01:43
Muchas gracias!, resolví el problema y de paso entendí lo del pase de parámetro