Ayuda con struct en C

Iniciado por nyper01, 15 Diciembre 2013, 17:40 PM

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

nyper01

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


amchacon

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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

nyper01

Muchas gracias, todo arreglado.
Desconocía que no podía poner el mismo nombre al fichero que a la estructura.

amchacon

#3
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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

nyper01

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.