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

2 duplicate symbols for architecture x86_64


asantos38

Pergunta

Boa tarde!

Estou trabalhando neste projeto e esse erro tem me tirado o sono.

O projeto é um cadastro de petshop. E o erro parece estar associado a função limparBuffer(), mas sinceramente não sei como tirar esse bug.

Estou usando xcode 11.2.1.

Vou postar o código.

//
//main.c

#include <stdio.h>
#include <stdlib.h>
#include "limpaBuf.h"
#include "messages.h"
#include "animal.h"
#include "menu.h"

int main(int argc, const char * argv[]) {
    Animal *cadastro;
    char escolha = '0';
    
    cadastro = malloc(sizeof(Animal));
    
    do {
        escolha = menu();
        
        switch (escolha) {
            case '1':
                cadastro = cadastroGeral();
                break;
            case '2':
                procurarAnimal(cadastro);
                break;
            default:
                break;
        }
    } while (escolha != '3');
    
    return 0;
}
//
//  menu.c


#include <stdio.h>
#include <stdlib.h>
#include "menu.h"
#include "limpaBuf.h"

char menu(void){
    char escolha;
    
    system("clear");
    
    printf("Cadastro de Animais\n\n\n");
    
    printf("[1] -- Cadastrar\n");
    printf("[2] -- Encontrar\n");
    printf("[3] -- Sair\n");
    
    printf("\n\n\n\n?: ");
    escolha = getchar();
    
    limparBuffer();
    
    return escolha;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "animal.h"
#include "limpaBuf.h"
#include "messages.h"

Animal* cadastrarAnimal(void){
    Animal* animal;
    
    system("clear");
    
    printf("Cadastro de Animal\n\n\n");
    
    animal = malloc(sizeof(Animal));
    
    printf("Nome: ");
    fgets(animal->nome, sizeof(animal->nome), stdin);
    
    printf("Dono: ");
    fgets(animal->dono, sizeof(animal->dono), stdin);
    
    printf("Idade: ");
    scanf("%d", &animal->idade);
    
    limparBuffer();
    
    printf("Raca: ");
    fgets(animal->raca, sizeof(animal->raca), stdin);
    
    animal->internado = false;
    
    animal->vacinado = false;
    
    return animal;
}

Animal* cadastroGeral(void){
    Animal* animal;
    char escolha = 's';
    int posicao_ponteiro = 0;
    
    animal = malloc(sizeof(Animal));
    
    while (escolha == 's' || escolha == 'S') {
        if (posicao_ponteiro == 0) {
            animal = malloc(sizeof(Animal));
            
            animal = cadastrarAnimal();
        }else{
            animal = realloc(animal, posicao_ponteiro * sizeof(Animal));
            
            animal += posicao_ponteiro;
            
            animal = cadastrarAnimal();
        }
        
        showMessage("Cadastro realizado com sucesso!");
        
        printf("\n\nCadastrar outro? ");
        
        escolha = getchar();
        
        limparBuffer();
        
        if (escolha == 's' || escolha == 'S') {
            posicao_ponteiro++;
        }
    }
    
    return animal;
}

void procurarAnimal(Animal* cadastro){
    char nome_animal[42];
    int posicao_ponteiro = 0;
    int encontrado = 0;
    
    system("clear");
    
    printf("Busca de Animal\n\n");
    
    printf("Nome Animal: ");
    fgets(nome_animal, sizeof(nome_animal), stdin);
    
    system("clear");
    
    while(cadastro) {
        if (strcmp(cadastro->nome, nome_animal) == 0) {
            encontrado = 1;
            break;
        }else{
            posicao_ponteiro++;
        }
        
        cadastro += posicao_ponteiro;
    }
    
    if (encontrado == 1) {
        printf("Animal encontrado\n\n");
        
        printf("Nome: %s\n", cadastro->nome);
        printf("Raça: %s\n", cadastro->raca);
        printf("Dono: %s\n", cadastro->dono);
        printf("Idade: %d\n", cadastro->idade);
        if (cadastro->vacinado == true) {
            printf("Vacinado: sim\n");
        }else{
            printf("Vacinado: não\n");
        }
        
        if (cadastro->internado == true) {
            printf("Interno: sim\n");
        }else{
            printf("Interno: não\n");
        }
    }else{
        showMessage("Animal não cadastrado!");
    }
}
//
//  messages.c


#include <stdio.h>
#include <stdlib.h>

void showMessage(const char* msg){
    int contador;
    
    system("clear");
    
    for (contador = 1; contador <= 80; contador++) {
        printf("-");
        
        if (contador == 80) {
            printf("\n");
        }
    }
    
    printf("-");
    
    for (contador = 1; contador <= 78; contador++) {
        printf(" ");
    }
    
    printf("-\n");
    
    printf("-");
    
    for (contador = 1; contador <= 78; contador++) {
        printf(" ");
    }
    
    printf("-\n");
    
    printf("-");
    
    for (contador = 1; contador < 25; contador++) {
        printf(" ");
    }
    
    printf("%s", msg);
    
    for (contador = 1; contador < 24; contador++) {
        printf(" ");
    }
    
    printf("-\n");
    
    for (contador = 1; contador <= 78; contador++) {
        printf(" ");
    }
    
    printf("-\n");
    
    printf("-");
    
    for (contador = 1; contador <= 78; contador++) {
        printf(" ");
    }
    
    printf("-\n");

    
    for (contador = 1; contador <= 80; contador++) {
        printf("-");
        
        if (contador == 80) {
            printf("\n");
        }
    }
    
}
//
//  limpaBuf.h

#include <stdio.h>
#ifndef limpaBuf_h
#define limpaBuf_h

void limparBuffer(){
    char c;
    
    while ((c = getchar()) != '\n' && c != EOF) {
    }
}

#endif /* limpaBuf_h */

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

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...