Codigo Finalizando no meio do caminho

08/11/2023

0

C

Boa noite, estou fazendo um trabalho da faculdade e criamos um programa pelo GDBonline na linguagem C e por la o codigo esta rodando normalmente, porem quando passo para o Aplicativo DevC++ o codigo se interrompe no meio do caminho, alguem poderia pelo amor de Deus me ajudar? Utilizei o DevC++ pois temos que enviar um arquivo EXE junto ao trabalho.
Segue codigo:
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <string.h>

//Declaração das Estruturas a serem utilizadas


typedef struct enderecoStruct
{
char rua[40];
char bairro[30];
char numero[6];
char cep[15];
char cidade[30];
char estado[20];
char pais[50];
} Endereco;

typedef struct CadastroPessoaStruct
{
char teste[10];
char nome_empresa[100];
char nome_fantasia[100];
char razao_social[100];
char cnpj_empresa[20];
char insc_estadual[30];
char telefone_empresa[15];
char email_empresa[50];
char nome_responsavel[100];
char rg_responsavel[20];
char cpf_responsavel[20];
char telefone_responsavel[15];
char email_resposaavel[50];
Endereco end;

} Pessoa;


typedef struct CadastroFuncionariosStruct
{
char teste[10];
char matricula_funcionario[15];
char nome_funcionario[50];
char cpf_funcionario[20];
char rg_funcionario[20];
char cargo_funcao[30];
char sexo_funcionario[10];
char telefone_funcionario[15];
char email_funcionario[50];
Endereco end;

} Funcionarios;

typedef struct CadastroMateriaisStruct
{
char testeM[10];
char codMateriais[2000];
char descMateriais[200];
char qtdMateriais[2000];
char observacao[200];

} Materiais;


//Declaração das variáveis
int input = 0;
int qtdClientes;
int tamClientes;
Pessoa *clientes;
FILE *arquivo;
char clientes_dir[] = "Clientes.bin";
int qtdFuncionarios;
int tamFuncionarios;
Funcionarios *funcionarios;
char funcionarios_dir[] = "Funcionarios.bin";
int codMateriais;
char descricaoMateriais;
int qtdMateriais;
int tamMateriais;
Materiais *materiais;
char materiais_dir[] = "Materiais.bin";

//Declaração dos Procedimentos e Funções a serem utilizados
void menuPrincipal();
void menuClientes();
void menuFuncionarios();
void menuMateriais();
void menuAlterarClientes();
void menuAlterarFuncionarios();
void removerQuebraLinha();
Pessoa receberClientes();
Pessoa *buscarClientes();
void inserirClientes();
void alterarNomeClientes();
void alterarTelefoneClientes();
int removerClientes();
void listarClientes();
Endereco receberEndereco();
void alterarEndereco();
void inserirEndereco();
Funcionarios receberFuncionarios();
void listarFuncionarios();
void inserirFuncionarios();
Funcionarios *buscarFuncionarios();
void alterarNomeFuncionarios();
void alterarTelefoneFuncionarios();
int desativarFuncionarios();
Materiais receberMateriais();
void inserirMateriais();
void listarMateriais();




//Início do main
int main(int argc, char** argv)
{



menuPrincipal();
return 0;
}

void erro(char *nome_arquivo)
{
printf("Nao foi possivel abrir o arquivo %s\n", nome_arquivo);
}

void sucesso()
{
system("cls");
printf ("Operacao realizada com sucesso!");
}



void menuPrincipal()
{
do
{
printf("\n");
printf ("\t\t\t BEM VINDOS A STARTUP!\n");
printf ("\t\t\t==========================\n");
printf ("\t\t\t| |\n");
printf("\t\t\t| 1 - Cliente |\n");
printf("\t\t\t| 2 - Funcionario |\n");
printf("\t\t\t| 3 - Materiais |\n");
printf("\t\t\t| 4 - Relatórios |\n");
printf("\t\t\t| 0 - Sair |\n");
printf ("\t\t\t| |\n");
printf ("\t\t\t==========================\n");
printf ("\n\n");
printf("\t\t\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
menuClientes();
break;
case 2:
menuFuncionarios();
break;
case 3:
menuMateriais();
break;
case 4:
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\n\t\t\tOpcao invalida!\n\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}

void menuClientes()
{
do
{
printf("\n");
printf ("\t\t\t\t STARTUP CLIENTES!\n");
printf ("\t\t\t===============================\n");
printf ("\t\t\t| |\n");
printf("\t\t\t| 1 - Listar Clientes |\n");
printf("\t\t\t| 2 - Buscar Cliente |\n");
printf("\t\t\t| 3 - Cadastrar Cliente |\n");
printf("\t\t\t| 4 - Alterar Cadastro |\n");
printf("\t\t\t| 5 - Excluir Cadastro |\n");
printf("\t\t\t| 6 - Menu Principal |\n");
printf("\t\t\t| 0 - Sair |\n");
printf ("\t\t\t| |\n");
printf ("\t\t\t===============================\n");
printf ("\n\n");
printf("\t\t\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
listarClientes();
break;
case 2:
buscarClientes();
break;
case 3:
fflush(stdin);
inserirClientes(receberClientes());
break;
case 4:
menuAlterarClientes();
break;
case 5:
removerClientes(qtdClientes, clientes_dir);
break;
case 6:
menuPrincipal();
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\n\t\t\tOpcao invalida!\n\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}


void menuFuncionarios()
{
do
{
printf("\n");
printf ("\t\t\t\t STARTUP FUNCIONÁRIOS!\n");
printf ("\t\t\t====================================\n");
printf ("\t\t\t| |\n");
printf("\t\t\t| 1 - Listar Funcionarios |\n");
printf("\t\t\t| 2 - Buscar Funcionarios |\n");
printf("\t\t\t| 3 - Cadastrar Funcionarios |\n");
printf("\t\t\t| 4 - Alterar Cadastro |\n");
printf("\t\t\t| 5 - Excluir Cadastro |\n");
printf("\t\t\t| 6 - Menu Principal |\n");
printf("\t\t\t| 0 - Sair |\n");
printf ("\t\t\t| |\n");
printf ("\t\t\t====================================\n");
printf ("\n\n");
printf("\t\t\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
listarFuncionarios();
break;
case 2:
buscarFuncionarios();
break;
case 3:
fflush(stdin);
inserirFuncionarios(receberFuncionarios());
break;
case 4:
menuAlterarFuncionarios();
break;
case 5:
desativarFuncionarios(qtdFuncionarios, funcionarios_dir);
break;
case 6:
menuPrincipal();
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\n\t\t\tOpcao invalida!\n\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}
Ygor Gonçalves

Ygor Gonçalves

Responder

Post mais votado

09/11/2023

Não sou nenhum especialista. Mas o código parece feito para C e o compilador que você está utilizando é para C++.

São linguagens diferentes.

Arthur Heinrich

Arthur Heinrich
Responder

Mais Posts

08/11/2023

Ygor Gonçalves

continuação do codigo:
void menuMateriais()
{
do
{
printf("\\n");
printf ("\\t\\t\\t\\t STARTUP MATERIAIS!\\n");
printf ("\\t\\t\\t===============================\\n");
printf ("\\t\\t\\t| |\\n");
printf("\\t\\t\\t| 1 - Listar Materiais |\\n");
printf("\\t\\t\\t| 2 - Buscar Materiais |\\n");
printf("\\t\\t\\t| 3 - Cadastrar Materiais |\\n");
printf("\\t\\t\\t| 4 - Alterar Cadastro |\\n");
printf("\\t\\t\\t| 5 - Excluir Cadastro |\\n");
printf("\\t\\t\\t| 6 - Menu Principal |\\n");
printf("\\t\\t\\t| 0 - Sair |\\n");
printf ("\\t\\t\\t| |\\n");
printf ("\\t\\t\\t===============================\\n");
printf ("\\n\\n");
printf("\\t\\t\\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
listarMateriais();
break;
case 2:
buscarClientes();
break;
case 3:
fflush(stdin);
inserirMateriais(receberMateriais());
break;
case 4:
menuAlterarClientes();
break;
case 5:
removerClientes(qtdClientes, clientes_dir);
break;
case 6:
menuPrincipal();
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\\n\\t\\t\\tOpcao invalida!\\n\\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}




void menuAlterarClientes()
{
do
{
printf("\\n");
printf ("\\t\\t\\t\\t STARTUP ATUALIZAÇÃO!\\n");
printf ("\\t\\t\\t==============================\\n");
printf ("\\t\\t\\t| |\\n");
printf("\\t\\t\\t| 1 - Alterar Nome |\\n");
printf("\\t\\t\\t| 2 - Alterar Telefone |\\n");
printf("\\t\\t\\t| 3 - Alterar Endereco |\\n");
printf("\\t\\t\\t| 4 - Menu Principal |\\n");
printf("\\t\\t\\t| 0 - Sair |\\n");
printf ("\\t\\t\\t| |\\n");
printf ("\\t\\t\\t==============================\\n");
printf ("\\n\\n");
printf("\\t\\t\\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
alterarNomeClientes();
break;
case 2:
alterarTelefoneClientes();
break;
case 3:
alterarEndereco();
break;
case 4:
menuPrincipal();
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\\n\\t\\t\\tOpcao invalida!\\n\\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}



void menuAlterarFuncionarios()
{
do
{
printf("\\n");
printf ("\\t\\t\\t\\t STARTUP ATUALIZAÇÃO!\\n");
printf ("\\t\\t\\t==============================\\n");
printf ("\\t\\t\\t| |\\n");
printf("\\t\\t\\t| 1 - Alterar Nome |\\n");
printf("\\t\\t\\t| 2 - Alterar Telefone |\\n");
printf("\\t\\t\\t| 3 - Alterar Endereco |\\n");
printf("\\t\\t\\t| 4 - Menu Principal |\\n");
printf("\\t\\t\\t| 0 - Sair |\\n");
printf ("\\t\\t\\t| |\\n");
printf ("\\t\\t\\t==============================\\n");
printf ("\\n\\n");
printf("\\t\\t\\tPor favor, selecione uma opcao: ");
fflush(stdin);
scanf("%d", &input);
system("cls");
switch(input)
{
case 1:
alterarNomeFuncionarios();
break;
case 2:
alterarTelefoneFuncionarios();
break;
case 3:
alterarEndereco();
break;
case 4:
menuPrincipal();
break;
case 0:
exit(EXIT_SUCCESS);
default:
printf ("\\n\\t\\t\\tOpcao invalida!\\n\\n");
fflush(stdin);
}
}
while(input != 0);
system("cls");
}





void removerQuebraLinha(char *string)
{
if(string != NULL && strlen(string) > 0)
{
short tamanho = strlen(string);
if(string[tamanho-1] == '\\n')
{
string[tamanho-1] = '\\0';
}
}
}

void receberString(char *string_destino, int quantidade_caracteres)
{
fgets(string_destino, quantidade_caracteres, stdin);
removerQuebraLinha(string_destino);
}

Pessoa receberClientes()
{
Pessoa p;

printf("\\n");
receberString(p.teste, 10);
printf("\\n");
printf("Nome da Empresa: ");
receberString(p.nome_empresa, 100);
printf("\\n");
fflush(stdin);
printf ("Nome Fantasia: ");
receberString(p.nome_fantasia, 100);
printf("\\n");
fflush(stdin);
printf ("Razao Social: ");
receberString(p.razao_social, 100);
fflush(stdin);
printf("\\n");
printf ("Incricao Estadual: ");
receberString(p.insc_estadual, 30);
fflush(stdin);
printf("\\n");
printf ("CNPJ da Empresa: ");
receberString(p.cnpj_empresa, 20);
fflush(stdin);
printf("\\n");
printf ("Telefone da Empresa: ");
receberString(p.telefone_empresa, 15);
fflush(stdin);
printf("\\n");
printf ("E-mail da Empresa: ");
receberString(p.email_empresa, 50);
fflush(stdin);
printf("\\n");
printf ("Nome Responsavel: ");
receberString(p.nome_responsavel, 20);
fflush(stdin);
printf("\\n");
printf ("RG Responsavel: ");
receberString(p.rg_responsavel, 20);
fflush(stdin);
printf("\\n");
printf ("CPF Responsavel: ");
receberString(p.cpf_responsavel, 20);
fflush(stdin);
printf("\\n");
printf ("Telefone Responsável: ");
receberString(p.telefone_responsavel, 15);
printf("\\n");
fflush(stdin);
printf ("E-mail Responsavel: ");
receberString(p.email_resposaavel, 50);
fflush(stdin);
printf("\\n");

p.end = receberEndereco();

sucesso();
return p;
}




Funcionarios receberFuncionarios()
{
Funcionarios f;

printf("\\n");
receberString(f.teste, 10);
printf("\\n");
printf("Matricula Colaborador : ");
receberString(f.matricula_funcionario, 15);
printf("\\n");
fflush(stdin);
printf ("Nome Colaborador : ");
receberString(f.nome_funcionario, 100);
printf("\\n");
fflush(stdin);
printf ("CPF Colaborador : ");
receberString(f.cpf_funcionario, 100);
fflush(stdin);
printf("\\n");
printf ("RG Colaborador: ");
receberString(f.rg_funcionario, 30);
fflush(stdin);
printf("\\n");
printf ("Sexo Coloborador : ");
receberString(f.sexo_funcionario, 10);
fflush(stdin);
printf("\\n");
printf ("Telefone Colaborador: ");
receberString(f.telefone_funcionario, 15);
fflush(stdin);
printf("\\n");
printf ("E-mail Colaborador: ");
receberString(f.email_funcionario, 50);
fflush(stdin);
printf("\\n");

f.end = receberEndereco();

sucesso();
return f;
}






Endereco receberEndereco()
{
Endereco e;

printf ("Rua: ");
receberString(e.rua, 40);
printf("\\n");
fflush(stdin);
printf ("Numero: ");
receberString(e.numero, 6);
printf("\\n");
fflush(stdin);
printf ("\\nCEP: ");
receberString(e.cep, 15);
printf("\\n");
fflush(stdin);
printf ("Bairro: ");
receberString(e.bairro, 30);
printf("\\n");
fflush(stdin);
printf ("Cidade: ");
receberString(e.cidade, 30);
printf("\\n");
fflush(stdin);
printf ("Estado: ");
receberString(e.estado, 20);
printf("\\n");
fflush(stdin);
printf ("Pais: ");
receberString(e.pais, 50);
printf("\\n");
fflush(stdin);

sucess
Responder

08/11/2023

Ygor Gonçalves

ultima parte:
sucesso();
return e;
}


Materiais receberMateriais()
{
Materiais m;

printf("\\n");
receberString(m.testeM, 10);
printf ("Codigo Materiais: ");
receberString(m.codMateriais, 200);
printf("\\n");
fflush(stdin);
printf ("Descricao Materiais: ");
receberString(m.descMateriais, 200);
printf("\\n");
fflush(stdin);
printf ("Quantidade de Materiais: ");
receberString(m.qtdMateriais, 2000);
printf("\\n");
fflush(stdin);
printf ("Obsevacao: ");
receberString(m.observacao, 2000);
printf("\\n");
fflush(stdin);

sucesso();
return m;
}

void inserirClientes(Pessoa p)
{
if(qtdClientes == tamClientes)
{
tamClientes *= 1.5;
clientes = realloc(clientes, tamClientes*sizeof(Pessoa));
}
clientes[qtdClientes] = p;
qtdClientes++;
}


void inserirFuncionarios(Funcionarios f)
{
if(qtdFuncionarios == tamFuncionarios)
{
tamFuncionarios *= 1.5;
funcionarios = realloc(funcionarios, tamFuncionarios*sizeof(Funcionarios));
}
funcionarios[qtdFuncionarios] = f;
qtdFuncionarios++;
}




void inserirMateriais(Materiais m)
{
if(qtdMateriais == tamMateriais)
{
tamMateriais *= 1.5;
materiais = realloc(materiais, tamMateriais*sizeof(Materiais));
}
materiais[qtdMateriais] = m;
qtdMateriais++;
}



void listarClientes()
{
int c;
printf("\\nListando %d cadastrado(s)\\n", qtdClientes);
for(c=0; c < qtdClientes; c++)
{
printf("-----------------------------------\\n");
printf("(%d)\\n", c+1);
printf("Nome Empresa = %s\\n", clientes[c].nome_empresa);
printf("Nome Fantasia = %s\\n", clientes[c].nome_fantasia);
printf("Razao Social = %s\\n", clientes[c].razao_social);
printf("CNPJ Empresa = %s\\n", clientes[c].cnpj_empresa);
printf("Inscricao Estadual = %s\\n", clientes[c].insc_estadual);
printf("Telefone Empresa = %s\\n", clientes[c].telefone_empresa);
printf("E-mail Empresa = %s\\n", clientes[c].email_empresa);
printf("Nome Responsavel = %s\\n", clientes[c].nome_responsavel);
printf("RG Responsavel = %s\\n", clientes[c].rg_responsavel);
printf("CPF Responsavel = %s\\n", clientes[c].cpf_responsavel);
printf("Telefone Responsavel = %s\\n", clientes[c].telefone_responsavel);
printf("Endereco = %s", clientes[c].end.rua);
printf(" - %s,", clientes[c].end.numero);
printf(" %s,", clientes[c].end.bairro);
printf(" %s", clientes[c].end.cidade);
printf(" - %s.", clientes[c].end.estado);
printf(" - %s.", clientes[c].end.pais);
}
}






void listarFuncionarios()
{
int f;
printf("\\nListando %d Funcionários cadastrados\\n", qtdFuncionarios);
for(f=0; f < qtdFuncionarios; f++)
{
printf("-----------------------------------\\n");
printf("(%d)\\n", f+1);
printf("Nome Colaborador = %s\\n", funcionarios[f].nome_funcionario);
printf("CPF Colaborador = %s\\n", funcionarios[f].cpf_funcionario);
printf("RG Colaborador = %s\\n", funcionarios[f].rg_funcionario);
printf("Sexo Colaborador = %s\\n", funcionarios[f].sexo_funcionario);
printf("Telefone Colaborador = %s\\n", funcionarios[f].telefone_funcionario);
printf("E-mail Colaborador = %s\\n", funcionarios[f].email_funcionario);
printf("Endereco = %s", funcionarios[f].end.rua);
printf(" - %s,", funcionarios[f].end.numero);
printf(" %s,", funcionarios[f].end.bairro);
printf(" %s", funcionarios[f].end.cidade);
printf(" - %s.", funcionarios[f].end.estado);
printf(" - %s.", funcionarios[f].end.pais);
}
}




void listarMateriais()
{
int m;
printf("\\nListando %d Materiais cadastrados\\n", qtdMateriais);
for(m=0; m < qtdMateriais; m++)
{
printf("-----------------------------------\\n");
printf("(%d)\\n", m+1);
printf("Codigo do Material = %s\\n", materiais[m].codMateriais);
printf("Descricao do Material = %s\\n", materiais[m].descMateriais);
printf("Quantidade de Materiais = %s\\n", materiais[m].qtdMateriais);
printf("Obeservação = %s\\n", materiais[m].observacao);

}
}


void alterarNomeClientes()
{
int i;
char cpf[11], nome[40];
printf ("Digite o CPF do cliente a ter o nome alterado: ");
fgets(cpf, 11, stdin);
printf ("Digite o novo nome: ");
fgets(nome, 39, stdin);
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].cpf_responsavel, cpf) == 0)
{
strcpy(clientes[i].nome_responsavel, nome);
break;
}
}
}

void alterarNomeFuncionarios()
{
int i;
char cpf[11], nome[40];
printf ("Digite o CPF do cliente a ter o nome alterado: ");
fgets(cpf, 11, stdin);
printf ("Digite o novo nome: ");
fgets(nome, 39, stdin);
for (i=0; i < qtdFuncionarios; i++)
{
if(strcmp(funcionarios[i].cpf_funcionario, cpf) == 0)
{
strcpy(funcionarios[i].nome_funcionario, nome);
break;
}
}
}



void alterarTelefoneClientes()
{
int i;
char cpf[11], fone[11];
printf ("Digite o CPF do cliente que deseja alterar número do telefone: ");
fgets(cpf, 11, stdin);
printf ("Digite o novo numero: ");
fgets(fone, 11, stdin);
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].cpf_responsavel, cpf) == 0)
{
strcpy(clientes[i].telefone_responsavel, fone);
break;
}
}
}


void alterarTelefoneFuncionarios()
{
int i;
char cpf[11], fone[11];
printf ("Digite o CPF do cliente que deseja alterar número do telefone: ");
fgets(cpf, 11, stdin);
printf ("Digite o novo numero: ");
fgets(fone, 11, stdin);
for (i=0; i < qtdFuncionarios; i++)
{
if(strcmp(funcionarios[i].cpf_funcionario, cpf) == 0)
{
strcpy(funcionarios[i].telefone_funcionario, fone);
break;
}
}
}



void alterarEndereco()
{
int i;
char cpf[12];
printf ("Digite o CPF do cliente a ter o endereco alterado: ");
fgets(cpf, 11, stdin);
Endereco e;
e = receberEndereco();
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].cpf_responsavel, cpf) == 0)
{
clientes[i].end = e;
break;
}
}
}

Pessoa *buscarClientes()
{
Pessoa *p = NULL;
int i;
char cpf[12];
printf ("Digite o CPF do cliente a ser buscado: ");
fgets(cpf, 11, stdin);
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].cpf_responsavel, cpf) == 0)
{
p = &clientes[i];
break;
}
}
return p;

}


Funcionarios *buscarFuncionarios()
{
Funcionarios *f = NULL;
int i;
char cpf[12];
printf ("Digite o CPF do cliente a ser buscado: ");
fgets(cpf, 11, stdin);
for (i=0; i < qtdFuncionarios; i++)
{
if(strcmp(funcionarios[i].cpf_funcionario, cpf) == 0)
{
f = &funcionarios[i];
break;
}
}
return f;

}



int removerClientes(int qtd, char *dir)
{
int i, CPF, sucess = 0;
printf("Digite o CPF do cliente que deseja remover: ");
scanf ("%d", &CPF);
for (i=0; i < qtd; i++)
{
if((clientes[i].cpf_responsavel - CPF) == 0)
{
while(i < qtd-1)
{
clientes[i] = clientes[i+1];
i++;
}
qtd--;
sucess = 1;
break;
}
else
{
erro(dir);
}
}
return sucess;
}


int desativarFuncionarios(int qtd, char *dir)
{
int i, CPF, sucess = 0;
printf("Digite o CPF do Colaborador que deseja desativar: ");
scanf ("%d", &CPF);
for (i=0; i < qtd; i++)
{
if((funcionarios[i].cpf_funcionario - CPF) == 0)
{
while(i < qtd-1)
{
funcionarios[i] = funcionarios[i+1];
i++;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar