Hola compañeros, Soy un estudiante de segundo de informática, y hasta ahora solo habiamos dado java, y de la noche a la mañana quieren que me convierta en un experto de C, xD.
Esto es unexamen de practicas que hay que realizar, la lógica del contenido es correcta, pero se que tengo muchos errores de compilación debido a mi desconocimiento de C.
Me vendría muy bien que algun experto pudiera decirme que estoy haciendo mal, un saludo.
Código c:
Ver original/******************************************************************
* Archivo generado autom·ticamente por MetaEdit+
* Nombre: DE_2_-_Registrar_Jugador.c
* Tipo: CÛdigo Fuente (.c)
* Autores:
******************************************************************/
#include "registrar_Jugador.h"
Reg_equipo equipos;
Reg_alumno alumnos;
Reg_equipo_jugador requip;
Reg_sancion sancion;
int es_valido=0;
FILE *fich;
char equipo[30];
char nif[9];
int fin=0;
char cadena[100];
int ok =0;
/***********************************************************************
* FunciÛn: Actualizar_Jugador
* DescripciÛn: ------
* Par·metros Entrada:
- nif_j (Est·ndar):
- nombre_e_v (Est·ndar):
* Par·metros Salida: -------
***********************************************************************/
void Actualizar_Jugador (int nif, char equipo ) {
//ESCRIBIR_EQUIPO_JUGADOR (Reg_equipo_jugador , int * );
fich
= fopen("equipo_jugador.txt", "wa"); fprintf(fich
, "%s %s \n", (requip.
nombre_equipo),(requip.
nif_jugador));
}
/***********************************************************************
* FunciÛn: Imprimir_Listado
* DescripciÛn: ------
* Par·metros Entrada:
- listado (Est·ndar):
- nombre_e_v (Est·ndar):
* Par·metros Salida: -------
***********************************************************************/
void Imprimir_Listado (Reg_alumno alumnos, char equipo ) {
// IMPRIMIR_LINEA (char *, int * );
int existe=1;
do {
*alumnos= recuperar();
if (alumnos==NULL) {
existe=0;
}
else {
printf("%s %s %s",alumnos.
nombre, alumnos.
nif, alumnos.
direccion); }
} while (existe==1)
}
/***********************************************************************
* FunciÛn: Mostrar_Jugadores
* DescripciÛn: ------
* Par·metros Entrada:
- nombre_e_v (Est·ndar):
* Par·metros Salida: -------
***********************************************************************/
void Mostrar_Jugadores (char equipo ) {
Imprimir_Listado (listado_jugadores , nombre_equipo );
}
/***********************************************************************
* FunciÛn: Obtener_Alumno_Valido
* DescripciÛn: ------
* Par·metros Entrada: -------
* Par·metros Salida:
- fin (Flag Descriptivo):
- nif_a_v (Est·ndar):
***********************************************************************/
void Obtener_Alumno_Valido (char *nif, int *fin ) {
//Obtener_Alumno (nif *, int * );
printf("Inserta el DNI del alumno a insertar en el equipo \n"); *fin=1;
}
/***********************************************************************
* FunciÛn: Obtener_Equipo_Valido
* DescripciÛn: ------
* Par·metros Entrada: -------
* Par·metros Salida:
- nombre_e_v (Est·ndar):
***********************************************************************/
void Obtener_Equipo_Valido (char *equipo ) {
//Obtener_Nombre (nombre_equipo *, int * );
//char equipo [30];
printf("En que equipo quieres registrar un alumno ? \n"); fgets(equipo
, 30, stdin
); void Validar_Equipo ( char equipo , int *es_valido );
}
/***********************************************************************
* FunciÛn: Obtener_Jugador
* DescripciÛn: ------
* Par·metros Entrada: -------
* Par·metros Salida:
- fin (Flag Descriptivo):
- nif_j (Est·ndar):
***********************************************************************/
void Obtener_Jugador (char *nif, int *fin ) {
void Obtener_Alumno_Valido (char *nif, int *fin );
void Validar_NO_Inscrito (char nif , int *ok );
void Validar_NO_Sancionado (char nif , int *ok );
}
/***********************************************************************
* FunciÛn: Registrar_Jugador
* DescripciÛn: ------
***********************************************************************/
void Registrar_Jugador ( ) {
void Obtener_Equipo_Valido (char *equipo );
inicializar_lista();
void Obtener_Jugador (char *nif , int *fin );
void Actualizar_Jugador (int nif , char equipo );
void Mostrar_Jugadores (char equipo );
}
/***********************************************************************
* FunciÛn: Validar_Equipo
* DescripciÛn: ------
* Par·metros Entrada:
- nombre_e (Est·ndar):
* Par·metros Salida:
- es_valido (Flag Descriptivo):
***********************************************************************/
void Validar_Equipo (char equipo, int *es_valido ) {
//LEER_EQUIPOS (Reg_equipo *, int * );
if ((fich
= fopen("equipos.txt", "r")) == NULL
){ mostrar_error(6);
}
while(fgets(cadena
,100,fich
)){ sscanf(cadena
,"%s %s %s ",(equipos.
nombre_equipo),(equipos.
nif_delegado),(equipos.
telefono)); if (strcmp(equipos.
nombre_equipo,equipo
)==0){ *es_valido=1;
}
}
if (es_valido==0) {
mostrar_error(4);
void Obtener_Equipo_Valido (char *equipo);
}
}
/***********************************************************************
* FunciÛn: Validar_Existe
* DescripciÛn: ------
* Par·metros Entrada:
- nif_a (Est·ndar):
* Par·metros Salida:
- es_valido (Flag Descriptivo):
***********************************************************************/
void Validar_Existe (char nif, int *es_valido ) {
/*LEER_ALUMNOS (Reg_alumno *, int * );*/
if ((fich
= fopen("alumnos.txt", "r")) == NULL
){ mostrar_error(6);
}
while(fgets(cadena
,100,fich
)&& es_valido
==0){ sscanf(cadena
,"%s %s %s ",(alumnos.
nombre),(alumnos.
nif),(alumnos.
direccion)); if (strcmp(alumnos.
nif,nif
)==0){ *es_valido=1;
}
}
if (*es_valido==1) {
void insertar( alumnos);
}
else {
mostrar_error(4);
void Obtener_Jugador(char *nif, int *fin);
}
}
/***********************************************************************
* FunciÛn: Validar_NO_Inscrito
* DescripciÛn: ------
* Par·metros Entrada:
- nif_a_v (Est·ndar):
* Par·metros Salida:
- ok (Flag Descriptivo):
***********************************************************************/
void Validar_NO_Inscrito (char nif, int *ok ) {
//LEER_EQUIPO_JUGADOR (Reg_equipo_jugador *, int * );
if ((fich
= fopen("equipo_jugador.txt", "r")) == NULL
){ mostrar_error(6);
}
while(fgets(cadena
,100,fich
)){ sscanf(cadena
,"%s %s ",(requip.
nombre_equipo),(requip.
nif_jugador)); if (strcmp(requip.
nif_jugador,nif
)==0){ mostrar_error(3);
borrar();
void Obtener_Alumno_Valido (char *nif, int *fin );
}
}
}
/***********************************************************************
* FunciÛn: Validar_NO_Sancionado
* DescripciÛn: ------
* Par·metros Entrada:
- nif_a_v (Est·ndar):
* Par·metros Salida:
- ok (Flag Descriptivo):
***********************************************************************/
void Validar_NO_Sancionado (char nif, int *ok ) {
//LEER_SANCIONES (, int * );
if ((fich
= fopen("sanciones.txt", "r")) == NULL
){ mostrar_error(6);
}
while(fgets(cadena
,100,fich
)){ sscanf(cadena
,"%s %s %s ",(sancion.
id),(sancion.
nif),(sancion.
motivos)); if (strcmp(sancion.
nif,nif
)==0){ mostrar_error(2);
void Obtener_Alumno_Valido (char *nif, int *fin );
}
}
}
Este es el modulo registrar_jugador, el cual se supone que hace funcionar el resto del programa, a través de la funcion con su mismo nombre y que va lanzando el resto de funciones, el trabajo consta de una librería libmtp.c, y de un cluster donde se guarda un array de structs para después poder imprimirlos por pantalla.
Los errores que me da son basicamente estos:
Conflicting types para todos los tipos de struct utilizados, los cuales estan declarados en el fichero "libmtp.c"
Nested functions are disabled. Este en particular me deja bastante loco.
Voy a ir poniendo el resto de codigo en otros posts para que no ralle tanto, se que estoy pasando por alto pequeños detalles de compilacion que desconozco.