• Lunes 16 de Diciembre de 2024, 19:28

Autor Tema:  Problema Con Punteros C  (Leído 1502 veces)

kikonenko

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema Con Punteros C
« en: Sábado 15 de Diciembre de 2007, 16:02 »
0
Hola, porfavor estoy desesperado, porque quiero hacer un programa y no encuentro ni una sola web de programación (ni español ni inglés), que vaya 'al día'. Sería mucho pedir que me explicáseis porqué me da errores este código?
Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. char* leer()//función que devuelve un puntero al primer carácter de formula[5];
  5. {
  6.      char datoformu[8],formula[5];//declaro
  7.      char*p=formula;
  8.      int i;
  9.      
  10.      printf("formula\n");//pido formula
  11.      scanf("%s", &datoformu);//almaceno formula (diff con gets?)
  12.      i=0;//mientras el carácter no sea una O, guarda los caracteres de datoformu en //formula.
  13.      while (datoformu[i]!='O')
  14.            {
  15.            formula[i]=datoformu[i];
  16.            i++;
  17.            }
  18. return p;//devuelve la dirección donde está el primer elemento de formula, para que //cuando se cierre leer main sepa donde está.
  19. }
  20.  
  21.  
  22. main()
  23. {
  24.                          //ejecuto leer, para que me pida la formula entera y almacene los //carácteres hasta O.  
  25.     printf("%s", leer());//imprime la cadena cuyo primer elemento es apuntado por p //(el retorno de leer). Sólo veo el //problema de
  26.                         //que no recuerde cuánto mide formula al imprimir *p,*(p+1), etc.
  27.     system("pause");
  28. return 0;
  29. }
  30.  
  31.  

emuller

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Problema Con Punteros C
« Respuesta #1 en: Lunes 17 de Diciembre de 2007, 02:11 »
0
¿Te da error de compilación? ¿Podrías decir que error te da exactamente?
Mi deseo: que le otorguen el premio Nobel de la paz al inventor del Copy & Paste. Gracias por evitarme tantas peleas con el tiempo y aumentar la esperanza de vida de mi teclado \":)\"

fORU-

  • Miembro MUY activo
  • ***
  • Mensajes: 225
  • Nacionalidad: mo
    • Ver Perfil
Re: Problema Con Punteros C
« Respuesta #2 en: Lunes 17 de Diciembre de 2007, 16:42 »
0
mmm al parecer este codigo no es tuyo amigo, por que usas system sin tener en cuenta que tienes que tener las librerias stdlib y la de process pero bueno, te acabo de decir lo que te hace falta.
atte:fORU-

arkaitz

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Problema Con Punteros C
« Respuesta #3 en: Martes 18 de Diciembre de 2007, 02:26 »
0
Trate de resolverlo haber si me salia algo a mi...
Esto es lo que me quedo...

Creo que el problema estaba en que tenias que definir a formula[] como static, para que los valores no desaparescan despues de terminada la funcion leer...


Código: Text
  1. #include <stdio.h>
  2. #define MAX 10
  3.  
  4.  
  5. char* leer();     /*prototipos*/
  6.  
  7. int main()   /*imprime el valor que devuelve leer()*/
  8. {
  9. char *letra;
  10. int i;
  11. letra=leer();
  12.  
  13. printf("\n");
  14.  
  15. while(*letra!='O') /*imprime hasta que *letra=O */
  16. {            
  17. putchar(*letra);
  18. letra++;
  19. }
  20. putchar('\n');
  21.  
  22. system("PAUSE");
  23. }
  24.  
  25. char* leer()    /*devuelve la ubicacion del primer caracter de formula[MAX]*/
  26. {
  27.        static char formula[MAX];
  28.        int i;
  29.        
  30.        for(i=0;i<MAX;i++)  /*lee valores hasta que i<MAX*/
  31.        formula[i]=getche();
  32.        
  33.        return &formula[0];
  34. }
  35.  

Citar
usas system sin tener en cuenta que tienes que tener las librerias stdlib
Me parece que esta usando el Dev-cpp...

Por ejemplo, este codigo funciona de lo mas bien sin incluir stdlib.h...
Y utiliza el comando system();
Código: Text
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    system("pause");
  5. }
  6.