ayuda punteros sencillo

Iniciado por adexrn, 1 Marzo 2012, 14:18 PM

0 Miembros y 1 Visitante están viendo este tema.

adexrn

¿Ayuda programacion c punteros?
ola tengo que hacer este ejercicio usando punteros, este programa te pide una palabra y te la devuelve alreves


#include<conio.h>
#include<stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char frase[120];
int f, longitud;
printf ("Introduce una frase: ");
scanf ("%s",frase);
longitud=strlen(frase)-1;
printf ("\n\rLa frase invertida es: ");
for (f=longitud; f>=0; f--)
{printf ("%c", frase[f]);
}
getch();

}






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

rir3760

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:
printf ("Introduce una frase: ");
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):
#include <stdlib.h>
#include <stdio.h>

#define NUM_CHARS  100

int main(void)
{
   char frase[NUM_CHARS];
   int i;
   char *p;
   
   printf("Introduce una frase: ");
   fflush(stdout);
   fgets(frase, NUM_CHARS, stdin);
   
   for (i = 0; frase[i] != '\0'; i++)
      ;
   if (i > 0 && frase[i - 1] == '\n')
      frase[--i] = '\0';
   p = frase + i;
   
   while (p-- > frase)
      putchar(*p);
   putchar('\n');
   
   return EXIT_SUCCESS;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

adexrn

Ok muchas gracias me salvaste la vida ;D