Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema a la hora de compilar c

Estas en el tema de problema a la hora de compilar c en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/02/2011, 05:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
problema a la hora de compilar c

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
  1. /******************************************************************
  2. * Archivo generado autom·ticamente por MetaEdit+
  3. * Nombre:  DE_2_-_Registrar_Jugador.c
  4. * Tipo:    CÛdigo Fuente (.c)
  5. * Autores:
  6. ******************************************************************/
  7.  
  8.  
  9. #include "registrar_Jugador.h"
  10. Reg_equipo equipos;
  11. Reg_alumno alumnos;
  12. Reg_equipo_jugador requip;
  13. Reg_sancion sancion;
  14. int es_valido=0;
  15. FILE *fich;
  16. char equipo[30];
  17. char nif[9];
  18. int fin=0;
  19. char cadena[100];
  20. int ok =0;
  21.  
  22.  
  23. /***********************************************************************
  24. * FunciÛn: Actualizar_Jugador
  25. * DescripciÛn: ------
  26. * Par·metros Entrada:
  27.    - nif_j (Est·ndar):
  28.      
  29.    - nombre_e_v (Est·ndar):
  30.      
  31. * Par·metros Salida: -------
  32. ***********************************************************************/
  33. void  Actualizar_Jugador (int nif, char equipo ) {
  34.     //ESCRIBIR_EQUIPO_JUGADOR (Reg_equipo_jugador , int * );
  35.     fich = fopen("equipo_jugador.txt", "wa");
  36.     fprintf(fich, "%s %s \n", (requip.nombre_equipo),(requip.nif_jugador));
  37.     fclose(fich);
  38.            
  39.        
  40.                
  41.    
  42.    
  43. }
  44.  
  45.  
  46.  
  47. /***********************************************************************
  48. * FunciÛn: Imprimir_Listado
  49. * DescripciÛn: ------
  50. * Par·metros Entrada:
  51.    - listado (Est·ndar):
  52.      
  53.    - nombre_e_v (Est·ndar):
  54.      
  55. * Par·metros Salida: -------
  56. ***********************************************************************/
  57. void  Imprimir_Listado (Reg_alumno  alumnos, char equipo ) {
  58.    // IMPRIMIR_LINEA (char *, int * );
  59.     int existe=1;
  60.     do {
  61.         *alumnos= recuperar();
  62.         if (alumnos==NULL) {
  63.             existe=0;
  64.         }
  65.         else {
  66.         printf("%s %s %s",alumnos.nombre, alumnos.nif, alumnos.direccion);
  67.         }
  68.     } while (existe==1)
  69. }
  70.  
  71.  
  72.  
  73. /***********************************************************************
  74. * FunciÛn: Mostrar_Jugadores
  75. * DescripciÛn: ------
  76. * Par·metros Entrada:
  77.    - nombre_e_v (Est·ndar):
  78.      
  79. * Par·metros Salida: -------
  80. ***********************************************************************/
  81. void  Mostrar_Jugadores (char equipo ) {
  82.     Imprimir_Listado (listado_jugadores , nombre_equipo  );
  83. }
  84.  
  85.  
  86.  
  87. /***********************************************************************
  88. * FunciÛn: Obtener_Alumno_Valido
  89. * DescripciÛn: ------
  90. * Par·metros Entrada: -------
  91. * Par·metros Salida:
  92.    - fin (Flag Descriptivo):
  93.      
  94.    - nif_a_v (Est·ndar):
  95.      
  96. ***********************************************************************/
  97. void  Obtener_Alumno_Valido (char *nif, int *fin ) {
  98.     //Obtener_Alumno (nif *, int * );
  99.        
  100.    
  101.     printf("Inserta el DNI del alumno a insertar en el equipo \n");
  102.     fgets(nif, 9,fich);
  103.     *fin=1;
  104.          
  105.    
  106.        
  107.        
  108. }
  109.  
  110.  
  111.  
  112. /***********************************************************************
  113. * FunciÛn: Obtener_Equipo_Valido
  114. * DescripciÛn: ------
  115. * Par·metros Entrada: -------
  116. * Par·metros Salida:
  117.    - nombre_e_v (Est·ndar):
  118.      
  119. ***********************************************************************/
  120. void  Obtener_Equipo_Valido (char *equipo ) {
  121.     //Obtener_Nombre (nombre_equipo *, int * );
  122.     //char equipo [30];
  123.     printf("En que equipo quieres registrar un alumno ? \n");
  124.     fgets(equipo, 30, stdin);
  125.    void Validar_Equipo ( char equipo , int *es_valido );
  126. }
  127.  
  128.  
  129.  
  130. /***********************************************************************
  131. * FunciÛn: Obtener_Jugador
  132. * DescripciÛn: ------
  133. * Par·metros Entrada: -------
  134. * Par·metros Salida:
  135.    - fin (Flag Descriptivo):
  136.      
  137.    - nif_j (Est·ndar):
  138.      
  139. ***********************************************************************/
  140. void  Obtener_Jugador (char *nif, int *fin ) {
  141.     void Obtener_Alumno_Valido (char *nif, int *fin );
  142.     void Validar_NO_Inscrito (char nif , int *ok );
  143.     void Validar_NO_Sancionado (char nif , int *ok );
  144.    
  145. }
  146.  
  147.  
  148.  
  149. /***********************************************************************
  150. * FunciÛn: Registrar_Jugador
  151. * DescripciÛn: ------
  152. ***********************************************************************/
  153. void  Registrar_Jugador ( ) {
  154.    
  155.    
  156.     void Obtener_Equipo_Valido (char *equipo );
  157.     inicializar_lista();
  158.     void Obtener_Jugador (char *nif , int *fin );
  159.     void Actualizar_Jugador (int nif , char equipo  );
  160.     void Mostrar_Jugadores (char equipo  );
  161.    
  162.    
  163. }
  164.  
  165.  
  166.  
  167. /***********************************************************************
  168. * FunciÛn: Validar_Equipo
  169. * DescripciÛn: ------
  170. * Par·metros Entrada:
  171.    - nombre_e (Est·ndar):
  172.      
  173. * Par·metros Salida:
  174.    - es_valido (Flag Descriptivo):
  175.      
  176. ***********************************************************************/
  177. void  Validar_Equipo (char equipo, int *es_valido ) {
  178.     //LEER_EQUIPOS (Reg_equipo *, int * );
  179.     if ((fich = fopen("equipos.txt", "r")) == NULL){
  180.         mostrar_error(6);
  181.          }
  182.    
  183.  
  184.     while(fgets(cadena,100,fich)){
  185.         sscanf(cadena,"%s %s %s ",(equipos.nombre_equipo),(equipos.nif_delegado),(equipos.telefono));
  186.         if (strcmp(equipos.nombre_equipo,equipo)==0){
  187.             *es_valido=1;
  188.             fflush(stdin);
  189.         }
  190.        
  191.     }
  192.     fclose(fich);
  193.     if (es_valido==0) {
  194.         mostrar_error(4);
  195.         void Obtener_Equipo_Valido (char *equipo);
  196.        
  197.     }
  198.    
  199.    
  200. }
  201.  
  202.  
  203.  
  204. /***********************************************************************
  205. * FunciÛn: Validar_Existe
  206. * DescripciÛn: ------
  207. * Par·metros Entrada:
  208.    - nif_a (Est·ndar):
  209.      
  210. * Par·metros Salida:
  211.    - es_valido (Flag Descriptivo):
  212.      
  213. ***********************************************************************/
  214. void  Validar_Existe (char nif, int *es_valido ) {
  215.     /*LEER_ALUMNOS (Reg_alumno *, int * );*/
  216.     if ((fich = fopen("alumnos.txt", "r")) == NULL){
  217.         mostrar_error(6);
  218.     }
  219.    
  220.     while(fgets(cadena,100,fich)&& es_valido==0){
  221.         sscanf(cadena,"%s %s %s ",(alumnos.nombre),(alumnos.nif),(alumnos.direccion));
  222.         if (strcmp(alumnos.nif,nif)==0){
  223.             *es_valido=1;
  224.             fflush(stdin);
  225.         }
  226.        
  227.     }
  228.     fclose(fich);
  229.     if (*es_valido==1) {
  230.         void insertar( alumnos);
  231.     }
  232.     else {
  233.         mostrar_error(4);
  234.         void Obtener_Jugador(char *nif, int *fin);
  235.        
  236.     }
  237.    
  238.  
  239. }
  240.  
  241.  
  242.  
  243. /***********************************************************************
  244. * FunciÛn: Validar_NO_Inscrito
  245. * DescripciÛn: ------
  246. * Par·metros Entrada:
  247.    - nif_a_v (Est·ndar):
  248.      
  249. * Par·metros Salida:
  250.    - ok (Flag Descriptivo):
  251.      
  252. ***********************************************************************/
  253. void  Validar_NO_Inscrito (char nif, int *ok ) {
  254.     //LEER_EQUIPO_JUGADOR (Reg_equipo_jugador *, int * );
  255.     if ((fich = fopen("equipo_jugador.txt", "r")) == NULL){
  256.         mostrar_error(6);
  257.     }
  258.    
  259.    
  260.     while(fgets(cadena,100,fich)){
  261.         sscanf(cadena,"%s %s ",(requip.nombre_equipo),(requip.nif_jugador));
  262.         if (strcmp(requip.nif_jugador,nif)==0){
  263.             mostrar_error(3);
  264.             borrar();
  265.             void Obtener_Alumno_Valido (char *nif, int *fin );
  266.             fflush(stdin);
  267.         }
  268.        
  269.     }
  270.     fclose(fich);
  271. }
  272.  
  273.  
  274.  
  275. /***********************************************************************
  276. * FunciÛn: Validar_NO_Sancionado
  277. * DescripciÛn: ------
  278. * Par·metros Entrada:
  279.    - nif_a_v (Est·ndar):
  280.      
  281. * Par·metros Salida:
  282.    - ok (Flag Descriptivo):
  283.      
  284. ***********************************************************************/
  285. void  Validar_NO_Sancionado (char nif, int *ok ) {
  286.     //LEER_SANCIONES (, int * );
  287.     if ((fich = fopen("sanciones.txt", "r")) == NULL){
  288.         mostrar_error(6);
  289.     }
  290.    
  291.     while(fgets(cadena,100,fich)){
  292.         sscanf(cadena,"%s %s %s ",(sancion.id),(sancion.nif),(sancion.motivos));
  293.         if (strcmp(sancion.nif,nif)==0){
  294.             mostrar_error(2);
  295.             void Obtener_Alumno_Valido (char *nif, int *fin );
  296.             fflush(stdin);
  297.         }
  298.        
  299.     }
  300.     fclose(fich);
  301.    
  302. }

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.
  #2 (permalink)  
Antiguo 28/02/2011, 05:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: problema a la hora de compilar c

Voy a poner el resto del código aquí. Estoy seguro que tengo errores super tontos que dañaran a los ojos de los mas experimentados, pero faciles de encontrar, xD
registrar_jugador.h

libmtp.c
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include "libmtp.h"
  4.  
  5. void leer_fecha(char *fecha){
  6.   struct tm * fecha_hora; /* tm es un tipo estructurado definido en <time.h>
  7.                           que contiene cada campo de fecha y hora */
  8.   time_t segundos;
  9.   segundos = time(NULL); /* obtiene los segundos desde 1-1-1970 */
  10.   fecha_hora=localtime(&segundos); /* convierte los 'segundos' en la hora local */
  11.   sprintf(fecha,"%d%02d%02d",fecha_hora->tm_year+1900,fecha_hora->tm_mon+1,fecha_hora->tm_mday);
  12.   fecha[8]='\0';
  13.  
  14. }
  15.  
  16. void mostrar_error(int error){
  17.     switch (error){
  18.         case ALUMNO_NO_EXISTE: printf("El alumno no existe en la base de datos.\n"); break;
  19.         case ALUMNO_SANCIONADO: printf("El alumno esta sancionado.\n"); break;
  20.         case ALUMNO_INSCRITO:printf("El alumno esta ya inscrito.\n"); break;
  21.         case EQUIPO_NO_EXISTE:printf("El equipo no existe.\n"); break;
  22.         case DEMASIADO_ALUMNOS:printf("El m·ximo de alumnos por equipo es de 20.\n"); break;
  23.         case NO_FICHERO:printf("Imposible acceder al almacen de datos\n"); break;
  24.     }
  25.     printf("\n");
  26. }
  27.  
  28. void borrar_pantalla(){
  29.     int i;
  30.     for (i=0;i<=25;i++) printf("\n");
  31. }

libmtp.h
Código c:
Ver original
  1. /* Fichero LIBMTP.H
  2.    definiciÛn de
  3.    estructuras de datos y
  4.    cabeceras de los mÛdulos de librerÌa de acceso a los archivos*/
  5.  
  6.  
  7. /* Constantes */
  8.  
  9.  
  10. # define LONG_DIRECCION 50
  11. # define LONG_NIF 9
  12. # define LONG_NOMBRE 50
  13. # define LONG_NOMBRE_EQUIPO 30
  14. # define LONG_TELEFONO 15
  15. # define LONG_MOTIVOS 30
  16.  
  17.  
  18.  
  19. /* CÛdigos de Error */
  20.  
  21.  
  22. # define ALUMNO_NO_EXISTE 1
  23. # define ALUMNO_SANCIONADO 2
  24. # define ALUMNO_INSCRITO 3
  25. # define EQUIPO_NO_EXISTE 4
  26. # define DEMASIADO_ALUMNOS 5
  27. # define NO_FICHERO 6
  28.  
  29.  
  30.  
  31. /* Tipos estructurados */
  32.  
  33. //typedef struct {
  34.  
  35. //  char dni[LONG_NIF];
  36. //  char nombre[LONG_NOMBRE];
  37. //} Alumno;
  38.  
  39. typedef struct {
  40.    
  41.     char nombre[LONG_NOMBRE+1], nif[LONG_NIF+1];
  42.     char direccion[LONG_DIRECCION+1];
  43. } Reg_alumno;
  44.  
  45. typedef struct {
  46.    
  47.     char nombre_equipo[LONG_NOMBRE_EQUIPO+1], nif_delegado[LONG_NIF+1], telefono[LONG_TELEFONO+1];
  48.    
  49. } Reg_equipo;
  50.  
  51.  
  52. typedef struct {
  53.    
  54.     char nombre_equipo[LONG_NOMBRE_EQUIPO+1], nif_jugador[LONG_NIF+1];
  55. } Reg_equipo_jugador;
  56.  
  57.  
  58. typedef struct {
  59.    
  60.     int id;
  61.     char nif[LONG_NIF+1];
  62.     char motivos [LONG_MOTIVOS+1];
  63. } Reg_sancion;
  64.  
  65. /* Librerias proporcionadas */
  66.  
  67.  
  68. void mostrar_error(int);
  69. /* Entrada: cÛdigo de error
  70.  * Efectos: Visualiza por pantalla el mensaje de error correspondiente al cÛdigo
  71.  */
  72.  
  73. void borrar_pantalla();
  74. /* Entrada: ---
  75.    Salida: ---
  76.    Efectos: limpia la pantalla */

cluster.c
Código c:
Ver original
  1. /*
  2.  *  cluster.c
  3.  *  recuperacion
  4.  *
  5.  *  Created by AmZHiT on 26/02/11.
  6.  *  Copyright 2011 __MyCompanyName__. All rights reserved.
  7.  *
  8.  */
  9.  
  10. #include "cluster.h"
  11.  
  12. static Reg_alumno elArray[20];
  13. static int tam;
  14.  
  15. void inicializar_lista(){
  16.     tam=0;
  17.    
  18. }
  19.  
  20. void insertar(struct Reg_alumno r){
  21.     Strcpy(elArray[tam].nombre,r.nombre);
  22.     Strcpy(elArray[tam].nif,r.nif);
  23.     Strcpy(elArray[tam].direccion,r.direccion);
  24.     tam++;
  25. }
  26.  
  27. struct Reg_alumno recuperar(void){
  28.     if (tam>=0) {
  29.        
  30.    
  31.     return elArray[tam];
  32.     tam--;
  33.     }
  34.     else {
  35.         return 0;
  36.     }
  37.  
  38. }
  39.  
  40. void borrar(){
  41.     elArray[tam]=0;
  42.     for (int i=tam; i<elArray.length(); i++) {
  43.         elArray[i]=elArray[i+1];
  44.     }
  45.     tam--;
  46. }

cluster.h
Código c:
Ver original
  1. /*
  2.  *  cluster.h
  3.  *  recuperacion
  4.  *
  5.  *  Created by AmZHiT on 26/02/11.
  6.  *  Copyright 2011 __MyCompanyName__. All rights reserved.
  7.  *
  8.  */
  9. #include "libmtp.h"
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12.  
  13. void inicializar_lista();
  14.  
  15. void insertar(struct Reg_alumno r);
  16.  
  17.  struct Reg_alumno recuperar();
  18.  
  19.  
  20. void borrar();

Me dan muchos errores de compilación con los structs, en el código en si no me da ninguno.

También me da muchos errores en las funciones, tanto si son void como si ecesitan pasar datos de una u otra forma.

Si alguien se toma el tiempo de mirar el código, muchas gracias de antemano.
  #3 (permalink)  
Antiguo 01/03/2011, 22:51
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: problema a la hora de compilar c

y donde inicia el programa??? No encuentro la función main amigo

Etiquetas: compilar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:29.