Ir para conteúdo
Fórum Script Brasil
  • 0

Criar biblioteca


dark_max

Pergunta

Galera é o seguinte... eu uso o Dev-C++ 4.9.9.2 e quando eu ia criar algum programa, só abria um novo arquivo e começava a escrever o código. Todo o programa ficava em um único arquivo, constantes, macros, declarações e definições de funções. Tá... isso não me atrapalhava, porque eu só fazia programas pequenos, mas recentemente estou fazendo um programa que terá algumas milhares de linhas e fazer tudo em um único arquivo é um trabalho ABSURDO!

Lendo coisas picadas na internet eu vi que a galera cria projetos (não sei como funciona direito)...

O que eu estou tentando fazer é dividir o programa por funções e colocar uma biblioteca com definições de macros, protótipo de funções etc.

Ai que está o problema! Não estou conseguindo fazer isso.

Eu tinha lido algumas coisas sobre colocar #ifndef na bilbioteca, mas eu não entendi. Se alguém puder me explicar como eu faço pra criar a biblioteca eu agradeceria.

Obs1.: O erro que aparece quando eu tendo compilar o main() é: 5 In file included from C:\Documents and Settings\Administrator\Desktop\Trabalho 2\Trabalho\TESTE com biblioteca\main(teste).c

Obs2.: por favor, expliquem com detalhes.

Vou colocar o que estou fazendo:

Função main()

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "biblioteca.h"


#define SENHA 00000000

/*Os protótipos de muitas funções estão na biblioteca xxx*/

/*variáveis para uso da função password*/
      char adm[80];
      char passw[9];

main()
{
      /*variáveis para uso no menu principal*/
      int opM,verdade=1;
      
      /*variáveis uso geral, main()*/
      /*explicação de algumas variáveis
      fpB=ponteiro para arquivo, B de brinquedo
      */
      int i,j,a,b,c; 
      char ch1,ch2;
      FILE *fpB;
      
      /*Arquivos, B de brinquedo, C de clinte*/
      if((fpB=fopen("cadastroB.dat", "ab+"))==NULL){printf("\nProblema ao abrir o arquivo\n");sleep(2000);exit(1);}
      
      while(verdade)
      {
                    
      printf("\nAdministrador(1)");
      printf("\nVendedor(2)");
      printf("\nCliente(3)");
      scanf("%d",&opM);
      
      switch (opM)
      {
             case 1:
                  printf("\nNome do usuário: ");
                  fflush(stdin);
                  gets(adm);
                  printf("\nSenha: ");
                  
                  for (i=0; i<8; i++)
                  {
                      *(passw+i)=ch1=getch();
                      if(*(passw+i)=='\r')
                      {
                                         printf("\nA senha precisa ser maior\n");
                                         printf("Senha: ");
                                         i=-1;
                                         continue;
                                         
                      }
                      printf("*");
                  }
                  
                  *(passw+(i+1))='';
                  
                  password();
                  administrador();


                  default:
                  printf("\nOp\x87\xE3o inv\x0lida, repita a opera\x87\xE3o\n");
                  sleep(2000);
                  system("cls");
      }
      
      }
      
      
      
      
      system ("PAUSE");
      return 0;
      
      
      
}



/*Definição das funções*/

/*definição adiministrador()*/
void administrador(void)
{
     /*explicação de algumas variáveis
      fpB=ponteiro para arquivo, B de brinquedo
      */
     
     int opM,i,verdade[4];
     tipo_brinquedo=brinquedo;
     FILE *fpB;
     for(i=0;i<4;i++)verdade[i]=1;
     
     /*explicação de algums arquivos
      brinquedo_CD=cadastro de brinquedos, o C não é de cliente
      */
      
     if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat);
     
     do
     {
         
     printf("\t\tADMINISTRA\X87\AO");
     printf("\n\n\t\tMENU\n\n");
     printf("\nCadastrar brinquedos(1)");
     printf("\nAlterar preço dos brinquedos(2)");
     printf("\nRegistro de uso dos brinquedos(3)");
     printf("\nRetornar ao menu principal(4)");
     scanf("%d",&opM);
     
     switch(opM)
     {
                case 1: do{brinquedo=cadastraB();
                           if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE;
                           printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: ");
                           scanf("%d",verdade[1]);                      
                          }while(verdade[1]);system("CLS");break;

                case 4: exit(1);
                default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS");
                
     }
     
     }while(verdade[0]);
     
     fclose(fpB);
}


/*definição password()*/
void password(void)
{
     char compara[9]={'0','0','0','0','0','0','0','0',''};
     int comp;
     
     
     
     comp=strcmp(passw,compara);
     
     if(comp == 0)
     printf("\nTudo certo");
  
}
Função administrador()
#include "biblioteca.h"
#include "cadastraB.c"
/*definição adiministrador()*/
void administrador(void)
{
     /*explicação de algumas variáveis
      fpB=ponteiro para arquivo, B de brinquedo
      */
     
     int opM,i,verdade[4];
     tipo_brinquedo=brinquedo;
     FILE *fpB;
     for(i=0;i<4;i++)verdade[i]=1;
     
     /*explicação de algums arquivos
      brinquedo_CD=cadastro de brinquedos, o C não é de cliente
      */
      
     if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat);
     
     do
     {
         
     printf("\t\tADMINISTRA\X87\AO");
     printf("\n\n\t\tMENU\n\n");
     printf("\nCadastrar brinquedos(1)");
     printf("\nAlterar preço dos brinquedos(2)");
     printf("\nRegistro de uso dos brinquedos(3)");
     printf("\nRetornar ao menu principal(4)");
     scanf("%d",&opM);
     
     switch(opM)
     {
                case 1: do{brinquedo=cadastraB();
                           if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE;
                           printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: ");
                           scanf("%d",verdade[1]);                      
                          }while(verdade[1]);system("CLS");break;
                
                case 2: alteraPB();system("CLS");break;
                case 3: verUB();system("CLS");break;
                case 4: exit(1);
                default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS");
                
     }
     
     }while(verdade[0]);
     
     fclose(fpB);
}
Função cadastraB()
#include <stdio.h>
#include <stdlib.h>
/*definição cadastraB*/
tipo_brinquedo cadastraB(void)
{
     /*explicação sobre letras usadas nas variáveis:
                  P=ponteiro
                  F=arquivo(file), tabém pode ser float
                  B=brinquedo
                  S=string
                  I=inteiro
     */
     int i,verdade[4];
     tipo_brinquedo brinquedo;
     
     for(i=0;i<4;i++)verdade[i]=1;
     system("CLS");
     
     do{
     printf("\t\tCADASTRO DE BRINQUEDOS\n\n");
     printf("Nome do brinquedo: ");
     fflush(stdin);
     gets(brinquedo.nome);
     verdade[0]=0;
     }while(verdade[0]);
     
     do{
     printf("N\xa3mero do brinquedo: ");
     fflush(stdin);
     gets(brinquedo.numeroS);
     RESTRICAO09(i,brinquedo.numeroS,brinquedo.numeroS);
     brinquedo.numeroI=atoi(brinquedo.numeroS);
     verdade[1]=0;
     }while(verdade[1]);
     
     do{
     printff("Pre\x87 do brinquedo: ");
     fflush(stdin);
     gets(brinquedo.precoS);
     RESTRICAO09(i,brinquedo.precoS,brinquedo.precoS);
     brinquedo.precoF=atof(brinquedo.precoS);
     verdade[2]=0;
     }while(verdade[2]);
     
     do{
     printf("Acesso ao brinquedo (Vip, 1=sim ou 0=não): ");
     fflush(stdin);
     gets(brinquedo.vipS);
     RESTRICAO09(i,brinquedo.vipS,brinquedo.vipS);
     brinquedo.vipI=atoi(brinquedo.vipS);
     verdade[3]=0;
     }while(verdade[3]);
     
    return brinquedo; 
}
blioteca.h
#include <stdio.h>
#include <stdlib.h>
#include "administrador.c"
#include "cadastaB."
/*
#include "administrador.c"
#include "cadastraB.c"
#include "TrabBETA0.02(teste).c"
*/

/*Declarações de tipos*/
typedef struct tipo_brinquedo
{
        char nome[80], numeroS[80], idadeS[3], vipS[2],precoS[3];
        short int numeroI, idadeI, vipI;
        float precoF;
};

/*Fim das declarações de tipos*/



/*====================================================================================================================================*/
/*definições*/
/*macros e afins*/
/*Algumas explicações
restrição09=restringe os valores a dígitos de 0 a 9
*/

#define RESTRICAO09(i,x,y) for(i=0;i<80;i++){if(x < 48 || y > 57){printf("S\x2 \x82 permitido n\x3meros");sleep(2000);system("CLS");continue;}}

/*Definição de erros*/
/*Algumas explicações
ERROA=erro de arquivo
ERROE=erro de escrita
*/
#define ERROA(n) printf("\nErro de abertura", n);sleep(2000);exit(1); 
#define ERROE(n) printf("\nErro de escrita", n);sleep(2000);break;
/*Fim das definições de macros*/



/*====================================================================================================================================*/
/*Declarações das funções*/
/*Os espaços separam as classes, administrador, vendedor, cliente*/
/*O primeiro nome após o espaço é sempre da classe e os nomes que se seguem são funções usadas dentro da classe*/
/*Significado de alguma letras usadas no nome de funções:
              B=brinquedo
              C=cliente
              P=preço
              U=uso
*/
extern void administrador(void);
extern void password(void);
extern tipo_brinquedo cadastraB(void);
extern void alteraPB(void);
extern void verUB(void);

extern void vendedor(void);
extern void cadastroC(void);
extern void recarregarC(void);

extern void cliente(void);

/*Fim das declarações de funões*/



/*====================================================================================================================================*/

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...