Ir ao conteúdo
  • Cadastre-se
Sioto

Return n Funciona Mas Exit sim

Recommended Posts

Fala galera, tenho essa função mas nao acho que compensa explicar toda ela, o negocio é que no meu Segundo IF ali, onde eu tenho exit(0), eu nao queria sair do programa, mas só sair dessa função, porém se eu coloco return 0 nao funciona, alguem faz ideia do porque?


int Production(data * Queue1, data* Queue2, delay * RGB_Delay_Stack1, delay *RGB_Delay_Stack2,int i,int endofQ1,int endofQ2){

gotoxy(30,45+i);
printf("%i\n\n",i);
data *AuxQ1_Next = Queue1, *AuxQ2_Next = Queue2;
data *AuxQ1_Actual = Queue1, *AuxQ2_Actual = Queue2;
delay *AuxD1 = RGB_Delay_Stack1, *AuxD2 = RGB_Delay_Stack2;
setcolor(brancoclaro);
if(i == 15)
i = 1;
if(Queue1->next->next == NULL && Queue2->next->next == NULL){
gotoxy(30,45+i);
printf("Oi\n");
AuxQ1_Actual = Queue1->next;
AuxQ2_Actual = Queue2->next;
getchar();
message(AuxQ1_Actual,AuxQ2_Actual,AuxQ1_Next,AuxQ2_Next,i++,1);
gotoxy(30,45+i++);
printf("Apertar Enter vai Sair do Programa");
getchar();
exit(0);
}
if(Queue1->next->next == NULL && endofQ1 == 0){
Production(Queue1,Queue2,RGB_Delay_Stack1,RGB_Delay_Stack2,i++,1,endofQ2);
}
if(Queue2->next->next == NULL && endofQ2 == 0){
Production(Queue1,Queue2,RGB_Delay_Stack1,RGB_Delay_Stack2,i++,endofQ1,1);
}
if(endofQ1 == 0)
while(AuxQ1_Actual->next != NULL){
AuxQ1_Next = AuxQ1_Next->next;
AuxQ1_Actual = AuxQ1_Next->next;
}
if(endofQ2 == 0)
while(AuxQ2_Actual->next != NULL){
AuxQ2_Next = AuxQ2_Next->next;
AuxQ2_Actual = AuxQ2_Next->next;
}

message(AuxQ1_Actual,AuxQ2_Actual,AuxQ1_Next,AuxQ2_Next,i++,0);
if(endofQ1 == 0){
Pop(AuxD1);
RemoveFromEndOfQueue(Queue1);
}
if(endofQ2 == 0){
RemoveFromEndOfQueue(Queue2);
Pop(AuxD2);
}
Production(Queue1,Queue2,RGB_Delay_Stack1,RGB_Delay_Stack2,i++,endofQ1,endofQ2);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Então, algumas cosiderações. Primeiro: tente colocar alguns prints dentro do if para ter certeza que está entrando nele, ou debugue. Segundo: evite usar o getchar() pois é uma função insegura apesar de ser ANSI, pois ele armazena um buffer até q seja pressionada a tecla enter. Por exemplo teste colocar um getchar apos o outro e verá que o segundo não vai esperar você pressionar alguma tecla, pois o segundo pegaŕa o enter que ficou no buffer do primeiro.Então sugiro que, apesar que isto não influencia um return, tire o getchar e faça um teste. Existem alternativas para getchar(), mas você precisa saber qual o compilador está usando, então, por exemplo, pode usar o getch() ou getche() para ler um caracter do teclado (estão na CONIO.H).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá. Então, algumas cosiderações. Primeiro: tente colocar alguns prints dentro do if para ter certeza que está entrando nele, ou debugue. Segundo: evite usar o getchar() pois é uma função insegura apesar de ser ANSI, pois ele armazena um buffer até q seja pressionada a tecla enter. Por exemplo teste colocar um getchar apos o outro e verá que o segundo não vai esperar você pressionar alguma tecla, pois o segundo pegaŕa o enter que ficou no buffer do primeiro.Então sugiro que, apesar que isto não influencia um return, tire o getchar e faça um teste. Existem alternativas para getchar(), mas você precisa saber qual o compilador está usando, então, por exemplo, pode usar o getch() ou getche() para ler um caracter do teclado (estão na CONIO.H).

Fala Clodoaldo,

Os getchar estão ali só pra eu fazer testes mesmo, o printf OI e o printf Apertar Enter vai Sair, é só pra teste também...

Depois eu vou retirar eles.

Eu tenho certeza que estou entrando no if, porque como eu disse, se eu mudar o return 0 para exit 0 o programa faz o que eu quero, mas em vez de sair da função sai do programa né.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×