Stack Overflow em Português Asked by Alex J on December 16, 2021
Estou desenvolvendo um aplicativo simples para trabalho de faculdade, e tenho dúvida em usar a função main()
no código para em vez de sair voltar para o começo do programa, isso seria uma boa prática ou não?
Abaixo tenho um exemplo na minha função cadastro()
, repare que no final do programa eu coloquei o main()
, caso o usuário digitar 4, 5 ou outra tecla qualquer, fazendo assim que ele não saia do programa.
void cadastro(){
int op;
static int linha;
cabecalhoCadastrar();
do{
//printf(":::::Cadastrar cliente:::::nn");
if(linha >= 5){
printf("nAgenda lotada!n");
break;
}
else{
printf("nNome: ");
fflush(stdin);
fgets(cliente[linha].nome, 50, stdin);
printf("Telefone: ");
fflush(stdin);
scanf("%d", &cliente[linha].telefone);
/* printf("Endereço: (rua, número, complemento): ");
fflush(stdin);
fgets(cliente[linha].endereco, 150, stdin);*/
linha++;
printf("nCliente cadastrado com sucesso!nnn");
system("pause");
system("cls");
cabecalhoCadastrar();
printf("n1- Cadastrar clienten2- Sairn");
fflush(stdin);
scanf("%d", &op);
system("cls");
}
}while(op == 1);
main();
}
Como eu costumo dizer: esqueça boas práticas. Só pode seguí-las sem causar estrago quem não precisa delas, o que é um paradoxo.
É uma questão de estar certo ou não, e se é adequado ou não para o contexto.
Neste caso específico está errado. Pode até funcionar em exercício, mas se entrar várias vezes na função main()
como está fazendo vai acumular na pilha e isto fará dar um estouro de memória em algum ponto.
Dependendo de outros fatores pode até causar outros problemas, isto é a pior coisa que pode fazer, um exemplo é quando usa o static
que quase nunca é adequado, especialmente neste caso onde a chamadas recursivas sem querer.
Quando termina a execução de uma função deve apenas return
ar para a função chamadora. Não deve nunca chamar a função chamadora ou outra que possa chamar a função chamadora para evitar um laço indesejado e estouro de pilha.
Tem vários outros erros nesta aplicação.
Answered by Maniero on December 16, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP