Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: adexrn en 1 Marzo 2012, 14:18 pm



Título: ayuda punteros sencillo
Publicado por: adexrn en 1 Marzo 2012, 14:18 pm
¿Ayuda programacion c punteros?
ola tengo que hacer este ejercicio usando punteros, este programa te pide una palabra y te la devuelve alreves


Código
  1. #include<conio.h>
  2. #include<stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. int main(void)
  6. {
  7. char frase[120];
  8. int f, longitud;
  9. printf ("Introduce una frase: ");
  10. scanf ("%s",frase);
  11. longitud=strlen(frase)-1;
  12. printf ("\n\rLa frase invertida es: ");
  13. for (f=longitud; f>=0; f--)
  14. {printf ("%c", frase[f]);
  15. }
  16.  
  17. }





este programa funciona pero me pueden decir como lo puedo usar utilizando punteros aqui
he provado definiendo un *puntero y asignarlo a texto y despues imprimir el puntero pero no se como es

gracias de antemano


Título: Re: ayuda punteros sencillo
Publicado por: rir3760 en 1 Marzo 2012, 15:36 pm
Siendo pesados ya estas utilizando punteros, ello debido a que el operador "[]" requiere que uno de sus operandos sea un puntero y el otro un entero.

Supongo lo que deseas es utilizar una variable de tipo "char *" para realizar el proceso. Eso es fácil pero antes hay que indicar dos errores en el programa:
Código
  1. printf ("Introduce una frase: ");
  2. scanf ("%s",frase);
El primero es lógico: al utilizar "%s" la función "scanf" no lee una frase como "anita lava la tina", solo lee una palabra. El otro es un error en potencia a la misma altura que el uso de "gets": no se limita la lectura de caracteres y ello puede causar una escritura mas allá de la capacidad del array.

Regresando al programa y modificando este para utilizar una variable del tipo mencionado (por supuesto solo es una de varias posibles soluciones):
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #define NUM_CHARS  100
  5.  
  6. int main(void)
  7. {
  8.   char frase[NUM_CHARS];
  9.   int i;
  10.   char *p;
  11.  
  12.   printf("Introduce una frase: ");
  13.   fflush(stdout);
  14.   fgets(frase, NUM_CHARS, stdin);
  15.  
  16.   for (i = 0; frase[i] != '\0'; i++)
  17.      ;
  18.   if (i > 0 && frase[i - 1] == '\n')
  19.      frase[--i] = '\0';
  20.   p = frase + i;
  21.  
  22.   while (p-- > frase)
  23.      putchar(*p);
  24.   putchar('\n');
  25.  
  26.   return EXIT_SUCCESS;
  27. }

Un saludo


Título: Re: ayuda punteros sencillo
Publicado por: adexrn en 1 Marzo 2012, 21:53 pm
Ok muchas gracias me salvaste la vida ;D