Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nyper01 en 15 Diciembre 2013, 17:40 pm



Título: Ayuda con struct en C
Publicado por: nyper01 en 15 Diciembre 2013, 17:40 pm
Hola buenas, soy un estudiante de 1º de la universidad (digo esto por que mis conocimientos en programacion son aun muy basicos), y en un trabajo que estoy haciendo me surge un problema. el código es este:
Citar

#include <stdio.h>
#include <stdlib.h>


int funcion(int ,int )

     struct jugadas
     {
       int f[1];
       int c[1];
     }jugadas;
 
  //   [...] Mucho codigo entre medio que no creo que tenga nada que ver

int funcion(int c, int f)
  {
        int fa=0, ca=0;
        FILE *jugadas;
        jugadas=fopen("ia.txt","r+");
        if(jugadas!=NULL)
       {
      while(!feof(jugadas))
        {
         if(fread(&jugadas,sizeof(jugadas),1,jugadas))
          {
            fa=jugadas.f;
            ca=jugadas.c;
          }
        }
       }
      
 }

_______________________________________________
El error que me da es:
377   15   [Error] request for member 'f' in something not a structure or union
378   15   [Error] request for member 'c' in something not a structure or union


Lo que quiero es que los datos almacenados en el fichero como "f" y como "c" pasen a las variables "fa" y "ca" de la función
¿Alguien me puede explicar que estoy haciendo mal o como hacerlo bien?

Muchas gracias de antemano



Título: Re: Ayuda con struct en C
Publicado por: amchacon en 15 Diciembre 2013, 18:40 pm
Código
  1. struct jugadas
  2. {
  3.       int f[1];
  4.       int c[1];
  5. }jugadas;
¿Arrays de longitud 1?

Código
  1. int funcion(int c, int f)
  2. {
  3.        int fa=0, ca=0;
  4.        FILE *jugadas;
  5.        jugadas=fopen("ia.txt","r+");
  6.        if(jugadas!=NULL)
  7.       {
  8.      while(!feof(jugadas))
  9.        {
  10.         if(fread(&jugadas,sizeof(jugadas),1,jugadas))
  11.          {
  12.            fa=jugadas.f;
  13.            ca=jugadas.c;
  14.          }
  15.        }
  16.       }
  17. }

Has llamado al archivo y a la estructura con el mismo nombre.


Título: Re: Ayuda con struct en C
Publicado por: nyper01 en 15 Diciembre 2013, 19:01 pm
Muchas gracias, todo arreglado.
Desconocía que no podía poner el mismo nombre al fichero que a la estructura.


Título: Re: Ayuda con struct en C
Publicado por: amchacon en 15 Diciembre 2013, 19:04 pm
Muchas gracias, todo arreglado.
Desconocía que no podía poner el mismo nombre al fichero que a la estructura.
Cuando hay dos variables con el mismo nombre, el compilador coge la más "interna".

La estructura al ser global, tiene menos prioridad que el FILE* (que está dentro de una función). Por tanto cada vez que llames a jugadas cogera el FILE* al ser más interna.

Lo mejor esque evites las colisiones de nombres porque llevan a confusiones, y la mejor forma de hacerlo es quitarte las variables globales de en medio.


Título: Re: Ayuda con struct en C
Publicado por: nyper01 en 15 Diciembre 2013, 23:04 pm
Muchas gracias, lo tendré en cuenta, pero no se si aun tengo nivel para eso, ya que voy aprendiendo poco a poco según lo que me enseñan en clase. De todas formas intentare no repetir nombres en ningún lado. Gracias por el consejo.