error strcmp y estructura
hola wenas mi problema es que al compilar en c++ me da dos errores, uno en el strcmp y otro que me dice nose q de una estructura y he estado mirando que puede ser el error pero no lo encuentro y me esta volviendo loco ya...:confused::confused:haber si alguien consigue encontrarlo...muxas gracias
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <limits.h>
#define MAX_CAMARAS 15
#define LON_PARTE 80
#define MAX_NOMBRE 20
/* Tipos de datos necesarios. */
typedef char TCadena[LON_PARTE];
typedef int Tidentificador[];
typedef struct
{
char zona[MAX_NOMBRE];
char trafico_inicial[LON_PARTE];
char trafico_actualizado[LON_PARTE];
Tidentificador identificador;
}Tmaquinas;
typedef struct
{
Tmaquinas maquinas;
int ocupado;
}Tlugar;
typedef Tlugar Tcamaras[MAX_CAMARAS];
////////////*prototipos de las funciones*/////////////////////
void inicializar(Tcamaras camaras);
void menu();
void crearcamara(Tcamaras camaras);
void decirsitiovacio(const Tcamaras camaras,int*sitio);
void buscarid(Tcamaras camaras,Tidentificador id_comp,int *comp,int *pos);
void introducirdatoscam(Tmaquinas * maquinas);
void leer_real ( const char mensaje[], double *resultado );
void leer_cadena ( const char mensaje[], const int tam, char resultado[] );
void leer_entero ( const char mensaje[], int *dato );///*leer un numero entero*///
/************************************************** *********************
*************************PROGRAMA PRINCIPAL*****************************
************************************************** *********************/
int main()
{
Tcamaras camaras;
int opcion;
inicializar(camaras);
do
{ menu();
fscanf (stdin,"%d",&opcion);
switch(opcion)
{
case 1:
crearcamara(camaras);/*insertar empleado*/
break;
case 2:
/*modificar datos*/
break;
case 3:
/*dar de baja*/
break;
case 4:
/*listar todos lo datos*/
break;
case 5:
fprintf (stdout,"Hasta luego\n");
break;
default:
fprintf (stdout,"Introduzca una opcion correcta\n");
}
}
while (opcion!=5);
return 0;
}
///////////////////////*INICIALIZAR VACIO*////////////////////////
void inicializar(Tcamaras camaras)
{
int i;
i=0;
while(i<25)
{
camaras[i].ocupado=0;
i=i+1;
}
}
/////////////////*MENU DE PRESENTACION*////////////////////////
void menu()
{
fprintf (stdout,"\nBase de datos de empleados\n");
fprintf (stdout,"1. dar de alta una nueva camara\n");
fprintf (stdout,"2. Modificar\n");
fprintf (stdout,"3. Dar de baja \n");
fprintf (stdout,"4. Listar \n");
fprintf (stdout,"5. Salir del programa\n");
fprintf (stdout,"Seleccione opcion (1, 2, 3, 4, 5): ");
}
///////////////////*DAR DE ALTA A UNA CAMARA*///////////////////////
void crearcamara(Tcamaras camaras)
{
int pos;
Tidentificador identifica;/*dice storage size"identifica isnt know*/
int comp;
int pos_comp;
decirsitiovacio(camaras,&pos);
if(pos != -1)
{
leer_entero("Introduzca el identificador: ",identifica);
buscarid(camaras,identifica,&comp,&pos_comp);
if (comp!=0)
{
introducirdatoscam(&camaras[pos].maquinas);
camaras[pos].ocupado=1;
}
if (comp==0)
{
fprintf (stdout,"Ya existe el identificador introducido\n");
}
}
else
fprintf (stdout, "No hay sitio\n");
}
//////////////////*DICE SI HAY UN SITIO OCUPADO*///////////////
void decirsitiovacio(const Tcamaras camaras,int*sitio)
{
int i;
i=0;
*sitio=-1;
while((i<15) && (camaras[i].ocupado==1))
{
i=i+1;
}
if(i<15)
*sitio=i;
}
/////////////////////////*BUSCAR IDENTIFICADOR*//////////////////////////
void buscarid(Tcamaras camaras,Tidentificador id_comp,int *comp,int *pos)
{
int i;
int encontrado;
i=0;
encontrado=-1;
while (i<15 && encontrado!=0)
{
if (camaras[i].ocupado!=0)
{
encontrado=strcmp(camaras[i].maquinas.identificador,id_comp);
}
if (encontrado==0)
{
*pos=i;
*comp=0;
}
i=i+1;
}
}
////////////////*LECTURA DATOS LABORALES*////////////////////
void introducirdatoscam(Tmaquinas * maquinas)
{
leer_entero("Introduzca el id de la camara: ",maquinas->identificador);
leer_cadena("Introduzca la zona que monitoriza: ",20,maquinas->zona);
}
//////////////////////*LEER UNA CADENA DE CARACTERES Y NUMEROS REALES Y ENTEROS*///////////////
void leer_real ( const char mensaje[], double *resultado )
{
char aux[50]; /* almacén temporal para la línea tecleada */
double valido; /* indica si el valor introducido es válido o no */
fprintf ( stdout, "%s: ", mensaje );
fflush ( stdin );
fgets ( aux, 50, stdin );
valido= sscanf( aux, "%lf", resultado)==1?1:0;
while ( valido==0 )
{
fprintf ( stdout, "ERROR: %s no valido\n", mensaje );
fprintf ( stdout, "%s: ", mensaje );
fflush ( stdin );
fgets ( aux, 50, stdin );
valido= sscanf( aux, "%lf", resultado)==1?1:0;
}
}
void leer_cadena ( const char mensaje[], const int tam, char resultado[] )
{
int valido; /* indica si el valor introducido es válido o no */
char aux[tam+1]; /* almacén temporal para los datos tecleados */
fprintf ( stdout, "%s: ", mensaje );
fflush ( stdin );
fgets ( aux, tam+1, stdin );
valido = ( aux[strlen(aux)-1]== '\n');
while ( !valido )
{
fprintf ( stdout, "ERROR: %s no valido\n", mensaje );
fprintf ( stdout, "%s: ", mensaje );
fflush ( stdin );
fgets ( aux, tam+1, stdin );
valido = ( aux[strlen(aux)-1]== '\n' );
}
aux[strlen(aux)-1]= '\0';
strcpy ( resultado, aux );
}
void leer_entero ( const char mensaje[], int *dato )
{
char tmp[20]; /* recoge los datos escritos por el usuario */
char *fin; /* apunta al último carácter procesado */
do
{ do
{ fprintf ( stdout, "%s: ", mensaje );
fgets ( tmp, 20, stdin );
} while ( ( tmp[strlen(tmp)-1]!='\n' || tmp[0]=='\n' ) && !fflush(stdin) && fprintf ( stdout, "Dato no válido\n" ) );
*dato = strtol ( tmp, &fin, 10 );
} while ( ( *fin != '\n' || *dato == LONG_MIN || *dato == LONG_MAX ) && !fflush(stdin) && fprintf ( stdout, "Dato no válido\n" ) );
}