• Domingo 5 de Mayo de 2024, 01:49

Autor Tema:  Puntero a una cadena.  (Leído 959 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Puntero a una cadena.
« en: Viernes 27 de Marzo de 2009, 11:16 »
0
Código: C++
  1.  
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. int inverteix(char *ini, char *fi);
  6.  
  7. int main()
  8. {
  9.     char frase[100];
  10.     char *fi;
  11.    
  12.     printf("Introdueix una frase n");
  13.     gets(frase);
  14.     fi=frase;
  15.     while(*fi!='')
  16.         fi++;
  17.     inverteix(frase,fi);
  18.     puts(frase);
  19.  
  20. getchar();
  21. getchar();
  22. }
  23. int inverteix(char *ini,char *fi)
  24. {
  25.      char aux1,aux2;
  26.      
  27.      while (ini<=fi)
  28.      {
  29.            aux1=*ini;
  30.            aux2=*fi;
  31.            *ini=aux2;
  32.            *fi=aux1;
  33.            ini++;
  34.            fi--;
  35.      }
  36.      return fi;
  37. }      
  38.  
  39.  

Pq no me devuelve el resultado de fi, y no me printa nada :S

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puntero a una cadena.
« Respuesta #1 en: Viernes 27 de Marzo de 2009, 11:27 »
0
El primer caracter termina siendo 0, el caracter final al que apunta fi, depuralo (con fi - 1 te funcionaria; no tiene sentido el valor ni el tipo ni el retorno en si mismo de inverteix).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Puntero a una cadena.
« Respuesta #2 en: Viernes 27 de Marzo de 2009, 11:29 »
0
Mueves el carácter al principio de la cadena, cosa que no deberías hacer si lo que quieres es invertir la cadena. Prueba así:

Código: C
  1. while(*fi!='')
  2.     fi++;
  3. inverteix(frase,--fi);
  4.  

P.D: la próxima vez explica cuál es el problema, yo no tengo por qué saber qué pretendes hacer...  :bad:  :bad:

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Puntero a una cadena.
« Respuesta #3 en: Viernes 27 de Marzo de 2009, 11:32 »
0
Cita de: "m0skit0"
Mueves el carácter al principio de la cadena, cosa que no deberías hacer si lo que quieres es invertir la cadena. Prueba así:

Código: C
  1. while(*fi!='')
  2.     fi++;
  3. inverteix(frase,--fi);
  4.  

P.D: la próxima vez explica cuál es el problema, yo no tengo por qué saber qué pretendes hacer...  :bad:  :bad:


Con esto me muestra solo la primera letra :S

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Puntero a una cadena.
« Respuesta #4 en: Viernes 27 de Marzo de 2009, 11:39 »
0
Porque modificas el valor del puntero frase dentro de la función. ¿Por qué no le dedicas un poco de tiempo antes de postear? Ya te lo dijo Eternal Idol: depura.