Hey :)
Damn I hate pointers in C :P Worse thing possible. Anything I post my code:
main.c
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <iso646.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <conio.h>
#include "estructuras.h"
#include "funciones.h"
#include "menus.h"
#define num 999
/* Localizado en menus.h */
void menuprincipal(cli *);
//void menucliente(cli *);
//void menuproductos();
//void menuempleado();
/* Localizado en funciones.h */
//void inicializar ();
//void confirmarcliente();
//void insertarcliente(cli *);
//void insertarempleado();
//void mostrarcliente(cli *);
//void inicializarporarchivo(cli *);
void main()
{
cli *pc;
pro *pp;
emp *pe;
*pc=c[0];
*pp=p[0];
*pe=e[0];
//system("cls");
//inicializar();
//menuprincipal();
//inicializarporarchivo(pc,pp,pe);
menuprincipal(*pc);
//guardarenfichero();
}
estructuras.h
#define num 999 // Para que sean todos las estructuras de 999
/* Estructuras principales */
struct direccion
{
char calle[15]; //Limitado a 15 characteres
int numportal; //1 digito
int piso; //1 digito
};
struct poblacion
{
char nombrepoblacion[15]; //Limitado a 15 characteres
int codpostal; //Limitado a 5 digitos
char provincia[15]; //Limitado a 15 characteres
};
struct empleados
{
int id; // Limitado a una letra E seguido de 3 numeros
char dni[11]; //Limitado a 8 numeros, un guion y una letra
char nombre[15]; //Limitado a 15 characteres
char apellido[15]; //Limitado a 15 characteres
int telefono; //Limitado a 9 digitos
struct direccion dir; // Una variable que es de tipo estructura dirrecion: acesso a calle,
//Numportal, y piso
struct poblacion pob; // Una variable que es de tipo estructura poblacion: accesso a
// nombrepoblacion, codpostal, y provincia
};
typedef struct empleados e[num];
typedef struct empleados emp;
/* Asi podemos insertar hasta 999 productos, porque he creado
la tabla que contiene num elementos de tipo empleados: Este numero es el mismo que el id */
struct clientes
{
int id; // Limitado a una letra C seguido de 3 numeros
char dni[11]; //Limitado a 8 numeros, un espacio y una letra
char nombre[15];//Limitado a 15 characteres
char apellido[15];//Limitado a 15 characteres
int telefono;//Limitado a 6 digitos
struct direccion dir; // Una variable que es de tipo estructura dirrecion: acesso a calle,
//Numportal, y piso
struct poblacion pob; // Una variable que es de tipo estructura poblacion: accesso a
// nombrepoblacion, codpostal, y provincia
int cantcompras; // La cantidad de comprars para los descuentos
};
typedef struct clientes c[num];
typedef struct clientes cli;
/* Asi podemos insertar hasta 999 productos, porque he creado
la tabla que contiene num elementos de tipo cliente: Este numero es el mismo que el id */
struct productos
{
int id; // Limitado a una letra P seguido de 3 numeros
char nombre[15]; //Limitado a 15 characteres
char descripcion[50]; //Limitado a 50 characteres
float precio; // Precio con decimal
int cantidad; //Lo que queda en stock
};
typedef struct productos p[num];
typedef struct productos pro;
/* Asi podemos insertar hasta 999 productos, porque he creado
la tabla que contiene num elementos de tipo producto: Este numero es el mismo que el id */
funciones.h
//#include "estructuras.h"
void menuprincipal(cli *);
//void menuempleado();
void menucliente(cli *);
//void menuproductos();
void inicializarporarchivo(cli *pc)
{
FILE *ficheroc;
FILE *ficheroe;
FILE *ficherop;
int i=0;
char tid[4];
char ttelefono[9];
char tcantcompras[1];
char tnumportal[2];
char tpiso[1];
char tcodpostal[5];
//malloc????
ficheroc=fopen("clientes.txt","r");
ficheroe=fopen("empleados.txt","r");
ficherop=fopen("productos.txt","r");
if (ficheroc==NULL)
{
printf ("no Encuentro!");
getch();
//inicializar();
inicializar (*pc);
}
if (ficheroc!=NULL)
{
printf ("Encuentro!");
do
{
for (i=0;i<999;i++)
{
/* c=fgetc(ficheroc);
if ((c!=EOF) && (c!='\n'))
c[i].nombre=c;
}
do
{
getc(c[i].id);
ficheroc++;
}while (ficheroc!="\n");*/
fgets(tid,sizeof(tid),ficheroc);
pc->id=atoi(tid);
/* do
{*/
fgets(pc->dni,sizeof(pc->dni),ficheroc);
/* }while (fgets!='\n');*/
/* do
{*/
fgets(pc->nombre,sizeof(pc->nombre),ficheroc);
/* }while (fgets!='\n');*/
/*do
{*/
fgets(pc->apellido,sizeof(pc->apellido),ficheroc);
/* }while (fgets!='\n');*/
/*do
{*/
fgets(ttelefono,sizeof(ttelefono),ficheroc);
/* }while (fgets!='\n');*/
pc->telefono=atoi(ttelefono);
/*do
{*/
fgets(tcantcompras,sizeof(tcantcompras),ficheroc);
/* }while (fgets!='\n');*/
pc->cantcompras=atoi(tcantcompras);
/* do
{*/
fgets(pc->dir.calle,sizeof(pc->dir.calle),ficheroc);
/* }while (fgets!='\n');*/
/*do
{*/
fgets(tnumportal,sizeof(tnumportal),ficheroc);
/* }while (fgets!='\n');*/
pc->dir.numportal=atoi(tnumportal);
/*do
{*/
fgets(tcodpostal,sizeof(tcodpostal),ficheroc);
/* }while (fgets!='\n');*/
pc->pob.codpostal=atoi(tcodpostal);
/*do
{*/
fgets(tpiso,sizeof(tpiso),ficheroc);
/* }while (fgets!='\n');*/
pc->dir.piso=atoi(tpiso);
/* do
{*/
fgets(&pc->pob.nombrepoblacion,sizeof(pc->pob.nombrepoblacion),ficheroc);
/*}while (fgets!='\n');*/
//do
//{
fgets(pc->pob.provincia,sizeof(pc->pob.provincia),ficheroc);
pc++;
/* }while (fgets!='\n');*/
}
}while (!feof(ficheroc));
fclose(ficheroc);
}
}
/* Esta funcion nos permite inicializar todas las estructuras */
/* Recorremos todos los clientes, empleados y productos hasta 999 y ponemos sus campos a 0*/
void inicializar (cli *pc)
{ // Principio de funciones inicizalizar
int a=0; // 1 Contador
/********************* Inicializamos la estructura de clientes *************************/
/* Campos int id, char dni, char nombre, char apellido, int telefono */
for (a=0;a<999;a++)
{
pc->id=0;
strcpy(pc->dni,"0");
strcpy(pc->nombre,"0");
strcpy(pc->apellido,"0");
pc->telefono=0;
pc->cantcompras=0;
strcpy(pc->dir.calle,"0");
pc->dir.numportal=0;
pc->dir.piso=0;
pc->pob.codpostal=0;
strcpy(pc->pob.nombrepoblacion,"0");
strcpy(pc->pob.provincia,"0");
pc++;
}
/***************** Fin de inicializacion de clientes ******************************/
/********************* Inicializamos la estructura de empleados *************************/
/* Campos: int id, char dni, char nombre, char apellido, int telefono */
/*
for (a=0;a<999;a++)
{
*pe->id=0;
strcpy(*pe->dni,"0");
strcpy(*pe->nombre,"0");
strcpy(*pe->apellido,"0");
*pe->telefono=0;
strcpy(*pe->dir.calle,"0");
*pe->dir.numportal=0;
*pe->dir.piso=0;
*pe->pob.codpostal=0;
strcpy(*pe->pob.nombrepoblacion,"0");
strcpy(*pe->pob.provincia,"0");
pe++;
}*/
/********************* Fin de inicializacion de empleados ******************************/
/***************** Inicializamos la estructura de productos ***********************/
/* for (a=0;a<999;a++) // Este for permite que cada 999 de los productos lo ponga a 0
{
*pp->id=0;
strcpy(*pp->nombre,"0");
strcpy(*pp->descripcion,"0");
*pp->precio=0.0;
*pp->cantidad=0;
pp++;
}*/
/***************** Fin de inicializacion de productos ******************************/
} // Fin de funciones de inicializar
/********************************FUNCIONES DE INSERTAR***************************************/
/*
void guardarenfichero(cli pc, empleados *pe,productos *pp)
{
int i=1;
FILE *ficheroc;
FILE *ficheroe;
FILE *ficherop;
//printf ("Hola");
//getch();
ficheroc=fopen("clientes.txt","w");
fputs("Cliente ",ficheroc);
fputs(&i,ficheroc);
fputs(":",ficheroc);
fputs('\n',ficheroc);
fputs(pc->id,ficheroc);
fputs("\n",ficheroc);
fputs(pc->nombre,ficheroc);
fclose(ficheroc);
}
*/
void insertarcliente(cli *pc)
{
char dni[11];
char letra;
int id;
int val=0;
do
{
system ("cls");
printf ("Que numero deseas utilizar de indentificador? (1-999)");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
if ((id>=1) && (id<=999))
{
val=1;
if (pc->id!=0)
{
printf ("Este numero ya esta siendo utilizado!");
getch();
val=0;
}
}
}while ((val!=1) || (val==0));
pc->id=id;
system("cls");
printf ("Estas en el cliente C-%d\nIntroduce los 8 digitos del DNI\n",pc->id);
fflush(stdin);
flushall();
scanf ("%8s",dni);
printf ("Introduce la letra del DNI\n");
flushall();
scanf("%1c",letra);
strcpy(pc->dni,dni);
strcat(pc->dni,"-");
strcat(pc->dni,letra);
printf ("Introduce el nombre del cliente\n");
fflush(stdin);
fgets(pc->nombre,15,stdin);
printf ("Introduce el apellido del cliente\n");
fflush(stdin);
fgets(pc->apellido,15,stdin);
printf ("Introduce la calle donde vive el cliente\n");
fflush(stdin);
fgets(pc->dir.calle,15,stdin);
printf ("Introduce el numero de portal/casa del cliente\n");
fflush(stdin);
scanf ("%1i",&(pc->dir.numportal));
printf ("Introduce el numero de piso (0 si es un bajo/casa individual)\n");
fflush(stdin);
scanf ("%1i",&(pc->dir.piso));
printf ("Introduce la poblacion donde vive el cliente\n");
fflush(stdin);
fgets(pc->pob.nombrepoblacion,sizeof(pc->pob.nombrepoblacion),stdin);
printf ("Introduce la provincia donde vive el cliente\n");
fflush(stdin);
fgets(pc->pob.provincia,sizeof(pc->pob.provincia),stdin);
printf ("Introduce el codigo postal de 5 digitos del cliente\n");
fflush(stdin);
scanf ("%5i",&(pc->pob.codpostal));
flushall();
printf ("Introduce el numero de telefono, con prefijo, del cliente\n");
fflush(stdin);
scanf ("%9i",&(pc->telefono));
// printf ("ID: C-%d\nDNI: %s\nNombre: %s\nApellido: %s\nCalle: %s\nNumero portal/casa: %d\nNumero piso: %d\nPoblacion: %s\nProvincia: %s\nCodigo Postal: %d\nTelefono: %d\n",c[id].id,c[id].dni,c[id].nombre,c[id].apellido,c[id].dir.calle,c[id].dir.numportal,c[id].dir.piso,c[id].pob.nombrepoblacion,c[id].pob.provincia,c[id].pob.codpostal,c[id].telefono);
printf ("Pulse intro para volver al menu principal\n");
getch();
menuprincipal(pc);
}
/*
void insertarempleado()
{
char dni[11];
char letra[1];
int id;
int val=0;
do
{
system ("cls");
printf ("Que numero deseas utilizar de indentificador? (1-999)");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
if ((id>=1) && (id<=999))
{
val=1;
if (e[id].id!=0)
{
printf ("Este numero ya esta siendo utilizado!");
getch();
val=0;
}
}
}while ((val!=1) || (val==0));
e[id].id=id;
system("cls");
printf ("Estas en el empleado E-%d\nIntroduce los 8 digitos del DNI\n",e[id].id);
fflush(stdin);
flushall();
scanf ("%8s",dni);
printf ("Introduce la letra del DNI\n");
flushall();
scanf("%1s",letra);
strcpy(e[id].dni,dni);
strcat(e[id].dni,"-");
strcat(e[id].dni,letra);
printf ("Introduce el nombre del empleado\n");
fflush(stdin);
fgets(e[id].nombre,sizeof e[id].nombre,stdin);
printf ("Introduce el apellido del empleado\n");
fflush(stdin);
fgets(e[id].apellido,sizeof e[id].apellido,stdin);
printf ("Introduce la calle donde vive el empleado\n");
fflush(stdin);
fgets(e[id].dir.calle,sizeof e[id].dir.calle,stdin);
printf ("Introduce el numero de portal/casa del empleado\n");
fflush(stdin);
scanf ("%1i",&e[id].dir.numportal);
printf ("Introduce el numero de piso (0 si es un bajo/casa individual)\n");
fflush(stdin);
scanf ("%1i",&e[id].dir.piso);
printf ("Introduce la poblacion donde vive el empleado\n");
fflush(stdin);
fgets(e[id].pob.nombrepoblacion,sizeof e[id].pob.nombrepoblacion,stdin);
printf ("Introduce la provincia donde vive el empleado\n");
fflush(stdin);
fgets(e[id].pob.provincia,sizeof e[id].pob.provincia,stdin);
printf ("Introduce el codigo postal de 5 digitos del empleado\n");
fflush(stdin);
scanf ("%5i",&e[id].pob.codpostal);
flushall();
printf ("Introduce el numero de telefono, con prefijo, del empleado\n");
fflush(stdin);
scanf ("%9i",&e[id].telefono);
printf ("ID: E-%d\nDNI: %s\nNombre: %s\nApellido: %s\nCalle: %s\nNumero portal/casa: %d\nNumero piso: %d\nPoblacion: %s\nProvincia: %s\nCodigo Postal: %d\nTelefono: %d\n",e[id].id,e[id].dni,e[id].nombre,e[id].apellido,e[id].dir.calle,e[id].dir.numportal,e[id].dir.piso,e[id].pob.nombrepoblacion,e[id].pob.provincia,e[id].pob.codpostal,e[id].telefono);
printf ("Pulse intro para volver al menu principal\n");
getch();
menuprincipal();
}
void insertarproducto()
{
int id;
int val=0;
do
{
system ("cls");
printf ("Que numero deseas utilizar de indentificador? (1-999)");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
if ((id>=1) && (id<=999))
{
val=1;
if (p[id].id!=0)
{
printf ("Este numero ya esta siendo utilizado!");
getch();
val=0;
}
}
}while ((val!=1) || (val=0));
p[id].id=id;
system("cls");
printf ("Estas en el producto P-%d\n",p[id].id);
printf ("Introduce el nombre del producto ");
fflush(stdin);
fgets(p[id].nombre,sizeof p[id].nombre,stdin);
printf ("Introduce una descripcion para el producto ");
fflush(stdin);
fgets(p[id].descripcion,sizeof p[id].descripcion,stdin);
printf ("Introduce el precio del producto ");
scanf ("%2f",p[id].precio);
printf ("Introduce el stock de este producto ");
scanf ("%i",p[id].cantidad);
printf ("Nombre: %s/n Descripcion: %s/n Precio: %2f/n Stock: %i/n",p[id].nombre,p[id].descripcion,p[id].precio,p[id].cantidad);
getch();
menuprincipal();
}
/*****************************FIN DE FUNCIONES DE INSERTAR*************************************/
/****************************FUNCIONES DE MOSTRAR********************************************/
/* Las funciones de mostrar funcionan de la siguiente manera: Se le pone un limite al ID que se
va mostrar. Hasta ese limite se mostrara todos los datos de ese cliente/empleado/producto si
existe y se a creado previamente el cliente/empleado/producto */
void mostrarcliente(cli *pc)
{
int nu;
int i;
do
{
system("cls");
printf ("Introduce hasta que numero quieres mostrar:");
scanf ("%d",&nu);
if ((nu>999) || (nu<1)) //Otra comprobacion si es normal el numero insertado
{
system ("cls");
printf ("No es valido este numero!");
}
}while ((nu>999) || (nu<1));
for (i=0;i<=nu;i++)
{
if (pc->id!=0)
{
printf ("ID: C-%d\n",pc->id);
printf ("DNI: %s\n",pc->dni);
printf ("Nombre: %s\n",pc->nombre);
printf ("Apellido: %s\n",pc->apellido);
printf ("Direccion \n Calle: %s \n Numero Portal:%d \n Piso:%d \n",pc->dir.calle,pc->dir.numportal,pc->dir.piso);
printf ("Poblacion \n Codigo Postal: %d \n Nombre: %s \n Provincia %s \n",pc->pob.codpostal,pc->pob.nombrepoblacion,pc->pob.provincia);
printf ("Telefono: %d \n",pc->telefono);
printf ("Cantidad de compras realizadas: %d \n",pc->cantcompras);
getch();
}
}
menuprincipal(pc);
}
/*
void mostrarempleado()
{
int nu;
int i;
do
{
system("cls");
printf ("Introduce hasta que numero quieres mostrar:");
scanf ("%d",&nu);
if ((nu>999) || (nu<1))
{
system ("cls");
printf ("No es valido este numero!");
}
}while ((nu>999) || (nu<1));
for (i=0;i<=nu;i++)
{
if (e[i].id!=0)
{
printf ("ID: E-%d\n",e[i].id);
printf ("DNI: %s\n",e[i].dni);
printf ("Nombre: %s\n",e[i].nombre);
printf ("Apellido: %s\n",e[i].apellido);
printf ("Direccion: \n Calle: %s \n Numero Portal: %d \n Piso: %d\n",e[i].dir.calle,e[i].dir.numportal,e[i].dir.piso);
printf ("Poblacion: Codigo Postal: %d \n Nombre: %s \n Provincia %s \n",e[i].pob.codpostal,e[i].pob.nombrepoblacion,e[i].pob.provincia);
printf ("Telefono: %d \n",e[i].telefono);
getch();
}
}
menuprincipal();
}
void mostrarproducto()
{
int nu;
int i;
do
{
system("cls");
printf ("Introduce hasta que numero quieres mostrar:");
scanf ("%d",&nu);
if ((nu>999) || (nu<1))
{
system ("cls");
printf ("No es valido este numero!");
}
}while ((nu>999) || (nu<1));
for (i=0;i<=nu;i++)
{
if (p[i].id!=0)
{
printf ("ID: P-%d\n",p[i].id);
printf ("Nombre: %s\n",p[i].nombre);
printf ("Descripcion: %s\n",p[i].descripcion);
printf ("Precio: %f2\n",p[i].precio);
printf ("Stock: %i\n",p[i].cantidad);
printf (" \n");
getch();
}
}
menuprincipal();
}
/************************************FIN DE FUNCIONES DE MOSTRAR*******************************/
/*************************************FUNCIONES DE ELIMINAR****************************/
void eliminarcliente(cli *pc)
{
int id;
int val;
char confir=' ';
do
{
system("cls");
printf ("Que ID quieres eliminar?\n");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
}while (val=0);
if ((id>=1) && (id<=999))
{
if (pc->id==0)
{
printf ("Este cliente no existe!");
getch();
menucliente(pc);
}
else
val=1;
}
if (val==1)
{
printf ("ID: C-%d\n",pc->id);
printf ("DNI: %s\n",pc->dni);
printf ("Nombre: %s\n",pc->nombre);
printf ("Apellido: %s\n",pc->apellido);
printf ("Telefono: %i\n",pc->telefono);
printf ("Direccion: %s\n",pc->dir.calle);
printf ("Nombre de poblacion: %s\n",pc->pob.nombrepoblacion);
printf ("Nombre de provincia: %s\n",pc->pob.provincia);
printf ("Numero de codigo postal: %d\n",pc->pob.codpostal);
printf ("Numero de portal: %d\n",pc->dir.numportal);
printf ("Numero de piso: %d\n",pc->dir.piso);
printf ("Canitdad de compras: %d\n",pc->cantcompras);
do
{
printf ("\nEstas seguro que quieres eliminar este cliente? S o N");
scanf ("%c",&confir);
}while ((confir!='S') && (confir!='N') && (confir!='s') && (confir!='n'));
if ((confir=='s') || (confir=='S'))
{
pc->id=0;
strcpy(pc->dni,"0");
strcpy(pc->nombre,"0");
strcpy(pc->apellido,"0");
pc->telefono=0;
strcpy(pc->dir.calle,"0");
pc->dir.numportal=0;
pc->dir.piso=0;
pc->pob.codpostal=0;
strcpy(pc->pob.nombrepoblacion,"0");
strcpy(pc->pob.provincia,"0");
pc->cantcompras=0;
printf ("Eliminado!\n Pulse intro para continuar");
getch();
menuprincipal(pc);
}
if ((confir=='n') || (confir=='N'))
{
menuprincipal(pc);
}
}
}
/*
void eliminarempleado()
{
int id;
int val;
char confir;
do
{
system("cls");
printf ("Que ID quieres eliminar?\n");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
}while (val=0);
if ((id>=1) && (id<=999))
{
if (e[id].id==0)
{
printf ("Este empleado no existe!");
getch();
menuempleado();
}
else
val=1;
}
if (val==1)
{
printf ("ID: E-%d\n",e[id].id);
printf ("DNI: %s\n",e[id].dni);
printf ("Nombre: %s\n",e[id].nombre);
printf ("Apellido: %s\n",e[id].apellido);
printf ("Telefono: %i\n",e[id].telefono);
printf ("Direccion: %s\n",e[id].dir.calle);
printf ("Nombre de poblacion: %s\n",e[id].pob.nombrepoblacion);
printf ("Nombre de provincia: %s\n",e[id].pob.provincia);
printf ("Numero de codigo postal: %d\n",e[id].pob.codpostal);
printf ("Numero de portal: %d\n",e[id].dir.numportal);
printf ("Numero de piso: %d\n",e[id].dir.piso);
do
{
printf ("\nEstas seguro que quieres eliminar este empleado? S o N");
scanf ("%c",&confir);
}while ((confir!='S') && (confir!='N') && (confir!='s') && (confir!='n'));
if ((confir=='s') || (confir=='S'))
{
e[id].id=0;
strcpy(e[id].dni,"0");
strcpy(e[id].nombre,"0");
strcpy(e[id].apellido,"0");
e[id].telefono=0;
strcpy(e[id].dir.calle,"0");
e[id].dir.numportal=0;
e[id].dir.piso=0;
e[id].pob.codpostal=0;
strcpy(e[id].pob.nombrepoblacion,"0");
strcpy(e[id].pob.provincia,"0");
printf ("Eliminado!\n Pulse intro para continuar");
getch();
menuprincipal();
}
if ((confir=='n') || (confir=='N'))
{
menuprincipal();
}
}
}
void eliminarproducto()
{
int id;
int val;
char confir;
do
{
system("cls");
printf ("Que ID quieres eliminar?\n");
scanf ("%d",&id);
if ((id<1) || (id>999))
{
printf ("El numero de id no es valido!");
getch();
val=0;
}
}while (val=0);
if ((id>=1) && (id<=999))
{
if (p[id].id==0)
{
printf ("Este producto no existe!");
getch();
menuproductos();
}
else
val=1;
}
if (val==1)
{
printf ("ID: P-%d\n",p[id].id);
printf ("Nombre: %s\n",p[id].nombre);
printf ("Descripcion: %s\n",p[id].descripcion);
printf ("Precio: %2f\n",p[id].precio);
printf ("Stock: %i\n",p[id].cantidad);
}
do
{
printf ("\nEstas seguro que quieres eliminar este producto? S o N");
scanf ("%c",&confir);
}while ((confir!='S') && (confir!='N') && (confir!='s') && (confir!='n'));
if ((confir=='s') || (confir=='S'))
{
p[id].id=0;
strcpy(p[id].nombre,"0");
strcpy(p[id].descripcion,"0");
p[id].precio=0.0;
p[id].cantidad=0;
printf ("Eliminado!\n Pulse intro para continuar");
getch();
menuprincipal();
}
if ((confir=='n') || (confir=='N'))
{
menuprincipal();
}
}
*/
int dniesvalido(char dni[11],cli *cp)
{
int inc=0;
char *p;
p=dni;
if (strlen(dni)-1!=8)
{
printf ("El DNI tiene que tener 8 digitos!");
getch();
inc=1;
return(0);
}
/*Metodo 2 con puntero*/
do
{
if ((atoi(dni)==0) && (inc==0))
{
if (*p=="-" || (isalpha(*p)==0))
{
printf ("Los primeros 8 numeros del DNI incluye un caracter invalido!");
getch();
inc=1;
return(0);
}
}
p++;
}while((p!="\0") && (inc==0));
if (isalpha(dni[10])==0)
{
printf ("El DNI incluye una letra invalida!");
getch();
inc=1;
return(0);
}
if (inc!=1)
{
return(1);
}
}
menus.h
#include "funciones.h"
void menuprincipal(cli *);
void menucliente(cli *);
//void menuproductos();
//void menuempleado();
/* Localizado en funciones.h */
//void inicializar ();
//void confirmarcliente();
void insertarcliente(cli *);
//void insertarempleado();
void mostrarcliente(cli *);
//void menubuscar();
//void menubuscarp();
/*
void menuempleado()
{
/*Menu principal del empleado*/
/* int opc;
do
{
system("cls");
printf ("Menu Empleado: \n");
printf ("1 - Eliminar \n");
printf ("2 - Buscar \n");
printf ("3 - Modificar Empleado \n");
printf ("4 - Insertar Empleado \n");
printf ("5 - Mostrar Tabla \n");
printf ("6 - Salir al Menu Principal \n");
scanf ("%d",&opc);
} while ((opc<1) || (opc>6) );
switch(opc)
{
case 1:
eliminarempleado();
break;
case 2:
system("cls");
printf ("Indisponible...");
getch();
menuempleado();
break;
case 3:
system("cls");
printf ("Indisponible...");
getch();
menuempleado();
break;
case 4:
insertarempleado();
break;
case 5:
mostrarempleado();
break;
case 6:
menuprincipal();
break;
}
}
*/
void menucliente(cli *pc)
{
/*Menu principal del cliente*/
int opc;
do
{
system("cls");
printf ("Menu Cliente: \n");
printf ("1 - Eliminar \n");
printf ("2 - Buscar \n");
printf ("3 - Modificar Cliente \n");
printf ("4 - Insertar Cliente \n");
printf ("5 - Mostrar Tabla \n");
printf ("6 - Salir al Menu Principal \n");
scanf ("%d",&opc);
} while ((opc<1) || (opc>6));
switch(opc)
{
case 1:
system("cls");
printf ("Indisponible...");
getch();
menucliente(*pc);
break;
case 2:
system("cls");
printf ("Indisponible...");
getch();
menucliente(*pc);
break;
case 3:
system("cls");
printf ("Indisponible...");
getch();
menucliente(*pc);
break;
case 4:
insertarcliente(*pc);
break;
case 5:
mostrarcliente(*pc);
break;
case 6:
menuprincipal(*pc);
break;
}
}
/*void menuproductos()
{
/* Menu de productos */
/* int opc;
do
{
system("cls");
printf ("Menu Productos: \n");
printf ("1 - Eliminar \n");
printf ("2 - Buscar \n");
printf ("3 - Modificar Producto \n");
printf ("4 - Insertar Producto \n");
printf ("5 - Mostrar Tabla \n");
printf ("6 - Salir al Menu Principal \n");
scanf ("%d",&opc);
} while ((opc<1) || (opc>6));
switch(opc)
{
case 1:
system("cls");
printf ("Indisponible...");
getch();
menuproductos();
break;
case 2:
system("cls");
printf ("Indisponible...");
getch();
menuproductos();
break;
case 3:
system("cls");
printf ("Indisponible...");
getch();
menuproductos();
break;
case 4:
insertarproducto();
break;
case 5:
mostrarproducto();
break;
case 6:
menuprincipal(cli pc);
break;
}
}
void menubuscar()
{
int opc;
do
{
system("cls");
printf ("Buscar por: \n");
printf ("1 - Por ID \n");
printf ("2 - Por nombre y apellido \n");
printf ("3 - Salir al menu principal \n");
scanf ("%d",&opc);
} while ((opc<1) || (opc>3));
switch(opc)
{
case 1:
system("cls");
printf ("Indisponible...");
getch();
menuprincipal(cli pc);
break;
case 2:
system("cls");
printf ("Indisponible...");
getch();
menuprincipal(cli pc);
break;
case 3:
menuprincipal(cli pc);
break;
}
}
void menubuscarp()
{
int opc;
do
{
system("cls");
printf ("Buscar por: \n");
printf ("1 - Por Codigo \n");
printf ("2 - Salir al menu principal \n");
scanf ("%d",&opc);
} while ((opc!=1) && (opc!=2));
switch(opc)
{
case 1:
system("cls");
printf ("Indisponible...");
getch();
menuprincipal(cli pc);
break;
case 2:
menuprincipal(cli pc);
break;
}
}
*/
void menuprincipal(cli *pc)
{
/* Esto es el menu principial del programa, el primer menu al abrir el programa */
int opc;
do
{
system("cls");
printf ("Hola! \n Bienvenidos a Deportes Rapidin! \n Menu principal: \n");
printf ("1 - Empleado \n");
printf ("2 - Cliente \n");
printf ("3 - Producto \n");
printf ("4 - Realizar Compra \n");
printf ("5 - Salir \n");
scanf ("%d",&opc);
} while ((opc<1) || (opc>5));
switch(opc)
{
case 1:
//menuempleado();
break;
case 2:
menucliente(*pc);
break;
case 3:
//menuproductos();
break;
case 4:
system("cls");
printf ("Indisponible...");
getch();
//menuprincipal();
break;
case 5:
exit(1);
//guardarenfichero();
}
}
Now the errors are the following:
Error 8 error C2371: 'inicializar' : redefinition; different basic types h:\***\funciones.h 141
Error 12 error C2084: function 'void inicializarporarchivo(cli *)' already has a body h:\***\funciones.h 13
Error 15 error C2371: 'inicializar' : redefinition; different basic types h:\***\funciones.h 141
Error 16 error C2084: function 'void insertarcliente(cli *)' already has a body h:\***\funciones.h 235
Error 19 error C2084: function 'void mostrarcliente(cli *)' already has a body h:\***\funciones.h 485
Error 20 error C2084: function 'void eliminarcliente(cli *)' already has a body h:\***\funciones.h 588
Error 21 error C2084: function 'int dniesvalido(char *,cli *)' already has a body h:\***\funciones.h 828
Error 23 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 100
Error 25 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 107
Error 27 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 114
Error 29 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 118
Error 31 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 122
Error 33 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 126
Error 35 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\menus.h 275
Error 37 error C2275: 'c' : illegal use of this type as an expression h:\***\main.c 54
Error 38 error C2275: 'p' : illegal use of this type as an expression h:\***\main.c 55
Error 39 error C2275: 'e' : illegal use of this type as an expression h:\***\main.c 56
Error 40 error C2440: 'function' : cannot convert from 'cli' to 'cli *' h:\***\main.c 74
Ive tried passing the pointers every single possible way and still more and more errors popup. Ive given up. If someone could lend me a hand, thank you very much.