Ir ao conteúdo

Ajuda no Comando C


fjd

Posts recomendados

Postado

tenho o seguinte comando:

do

{

do

{

printf ("Reiniciar Aplicativo? (s/n)\n");

scanf ("%s", &ch);

if ((ch!='s') && (ch!='n')) {printf ("Erro\n");}

} while ((ch!='n') && (ch!='s'));

} while (ch!='s');

goto menu;

}

se eu digito s ele volta pro menu

mas se eu digito n ele pede de novo pra reiniciar

o que esta faltando?

tentei adicionar o comando else abaixo do goto mas dá erro na compilação.:(

Postado
tenho o seguinte comando:

do

{

do

{

printf ("Reiniciar Aplicativo? (s/n)\n");

scanf ("%s", &ch);

if ((ch!='s') && (ch!='n')) {printf ("Erro\n");}

} while ((ch!='n') && (ch!='s'));

} while (ch!='s');

goto menu;

}

se eu digito s ele volta pro menu

mas se eu digito n ele pede de novo pra reiniciar

o que esta faltando?

tentei adicionar o comando else abaixo do goto mas dá erro na compilação.:(

Tava tentando "pegar" a lógica e não sei bem o que você esta querendo fazer. Mas é o seguinte.

Vamos supor que você digitou 's'(quer reiniciar). Ele vai sair do primeiro pois o 1° while vai ser falso. Então ele vai pular para o segundo do/while. você então formulou "se o conteúdo de ch não for 's', permanece no 2° do/while e repete tudo"...no nosso caso como temos o 's', ele vai ser "==" e não "!=", portanto vai sair do 2° while mesmo e vai para o menu...normal, sem problemas.

No caso se digitarmos 'n'. Ele vai sair do 1° do/while pois vai ser falso. Então vai para o 2° do/while. Você formulou então "se o conteúdo de 'ch' for diferente de 's'(no caso n é diferente de s), então, volte e faça tudo de novo".

No 2° while, ele vai ficar repetindo tudo de novo enquanto você não digitar "sim".

Não sei se você entendeu o que eu quis explicar.

Naõ sei o que quer fazer, mas se for sair, pode também usar uma função pra sair como exit(1), só não sei as recomendações e problemas que ela pode trazer mas da pra dar uma pesquisada. E também no scanf, você poderia colocar scanf(" %c",&ch); O espaço (" ") serve pra não pegar espaço e evitar uns bugs bobos( se eu tiver errado corrijam ).

Postado

cara assim resumindo

eu qro que quando digita o "s" o programa vote pro menu e quando digita "n" ele sai do programa.

o programa já tá voltando pro menu só fala faze ele sai

quando aperta "n".

Postado

fjd, beleza vei?

o que você quer com o scanf fica mais chato, e melhor você usar um que pegue somente o caracter digitado, sugiro o seguinte:

do{ // programa principal

do{ // loop interno

printf( "Reiniciar Aplicativo: Sim<S> ou Não<N>?" );

op = getche();

}while( toupper( op ) != 'S' && toupper( op ) != 'N' );

if( toupper( op ) == 'S' ) goto MENU;

}while( toupper( op ) != 'N' )

Isso deve resolver. Mais não use goto cara é uma prática muito ruim. Modularize seu programa e faça isso através de uma rotina.

Abraço.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!