Test Foro de elhacker.net SMF 2.1

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
struct jugadas
{
       int f[1];
       int c[1];
}jugadas;

¿Arrays de longitud 1?


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;
          }
        }
       }
}


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
Cita de: 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.
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.