Linker command failed with exit code 1

Can’t seem to figure out where it went wrong

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTAS 5

typedef enum { ATIVO, PASSIVO, PAT_LIQ } Categoria;

typedef struct {
    char nome[50];
    float valor;
    Categoria categoria;
} Conta;

void cadastrar_contas(Conta *contas, int *n_contas);
void cadastrar_contas(Conta *contas, int *n_contas);
void classifica_contas(char** balanco, int tamanho);
void imprimi_balanco(char* nome_arquivo, char* conta_desejada);
void salvar_contas(Conta *contas, int n_contas);
void carregar_contas(Conta *contas, int *n_contas);
void salvar_balanco(char* nome_arquivo, char** balanco, int tamanho);
//void classificar_contas(Conta *contas, int n_contas);
//void imprimir_balanco(Conta *contas, int n_contas);

int main() {
    Conta contas[MAX_CONTAS];
    int n_contas = 0;
    char opcao;

    carregar_contas(contas, &n_contas);

    do {
        printf("Digite a opcao desejada:\n");
        printf("1 - Cadastrar contas\n");
        printf("2 - Classificar contas\n");
        printf("3 - Imprimir balanco\n");
        printf("0 - Sair\n");
        scanf(" %c", &opcao);

        switch (opcao) {
            case '1':
                cadastrar_contas(contas, &n_contas);
                salvar_contas(contas, n_contas);
                break;
            case '2':
                classifica_contas(contas, n_contas);
                salvar_contas(contas, n_contas);
                break;
            case '3':
                imprimi_balanco("conta.txt", contas);
                break;
            case '0':
                printf("Encerrando programa.\n");
                break;
            default:
                printf("Opcao invalida! Tente novamente.\n");
        }
    } while (opcao != '0');

    return 0;
}

void cadastrar_contas(Conta *contas, int *n_contas) {
    char opcao;

    do {
        printf("Digite o nome da conta: ");
        scanf("%s", contas[*n_contas].nome);
        printf("Digite o valor da conta: ");
        scanf("%f", &contas[*n_contas].valor);
        printf("Digite a categoria da conta: A - Ativo\t, P - Passivo\tL - Patrimonio Liquido\n ");
        scanf(" %c", &opcao);
        switch (opcao) {
            case 'A':
            case 'a':
                contas[*n_contas].categoria = ATIVO;
                break;
            case 'P':
            case 'p':
                contas[*n_contas].categoria = PASSIVO;
                break;
            case 'L':
            case 'l':
                contas[*n_contas].categoria = PAT_LIQ;
                break;
            default:
                printf("Opcao invalida! A conta sera classificada como 'Outros'.\n");
                contas[*n_contas].categoria = PAT_LIQ + 1; // Outros
        }
        (*n_contas)++;
        printf("Deseja cadastrar outra conta? (S/N) ");
        scanf(" %c", &opcao);
    } while (opcao == 'S' || opcao == 's');
}

void classifica_contas(char** balanco, int tamanho) {
    printf("Classificação das contas do balanço patrimonial:\n");

    for (int i = 0; i < tamanho; i++) {
        if (strncmp(balanco[i], "Ativo", 5) == 0) {
            printf("%s: Ativo\n", balanco[i]);
        } else if (strncmp(balanco[i], "Passivo", 7) == 0) {
            printf("%s: Passivo\n", balanco[i]);
        } else if (strncmp(balanco[i], "Receita", 7) == 0) {
            printf("%s: Receita\n", balanco[i]);
        } else if (strncmp(balanco[i], "Despesa", 7) == 0) {
            printf("%s: Despesa\n", balanco[i]);
        } else {
            printf("%s: Não classificado\n", balanco[i]);
        }
    }
}

void imprimi_balanco(char* nome_arquivo, char* conta_desejada) {
    FILE* arquivo = fopen(nome_arquivo, "r");
    if (arquivo == NULL) {
        printf("Erro ao abrir o arquivo.\n");
        return;
    }

    char linha[100];
    int encontrou_conta = 0;
    while (fgets(linha, 100, arquivo)) {
        if (strstr(linha, conta_desejada) != NULL) {
            encontrou_conta = 1;
            printf("%s", linha);
            while (fgets(linha, 100, arquivo)) {
                if (linha[0] == '\n') {
                    break;
                }
                printf("%s", linha);
            }
            break;
        }
    }

    if (!encontrou_conta) {
        printf("A conta desejada não foi encontrada.\n");
    }

    fclose(arquivo);
}

void salvar_balanco(char* nome_arquivo, char** balanco, int tamanho) {
    FILE* arquivo = fopen("contas.txt", "w");
    if (arquivo == NULL) {
        printf("Erro ao abrir arquivo!\n");
        return;
    }

    for (int i = 0; i < tamanho; i++) {
        fprintf(arquivo, "%s\n", balanco[i]);
    }

    fclose(arquivo);
    printf("Balanço patrimonial salvo no arquivo %s!\n", nome_arquivo);
}

/*void salvar_contas(Conta *contas, int n_contas) {
    FILE *arquivo;
    int i;

    arquivo = fopen("contas.dat", "wb");*/

I would guess that this is because you have another file in the repl which also has a main function. Use a separate repl for each project.

this is a single replit, how can it have more than a main? i dont really know c, this is my friends code

main function in other files are used as well. If this isn’t the problem, could you link the repl (not invite)?

https://replit.com/@Arthursinja/Patrimonial2#main.c