¿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
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
Ok muchas gracias me salvaste la vida ;D