Pessoal continuo desenvolvendo o menu do meu primeiro programa e depois de resolver o problema do switch agora me deparei com uma cena inusitada, vou postar o código inteiro aqui e explicar o por quê.
printf("=======================Verifique os dados=======================\n");
printf("%s pilotará o carro vermelho\n",nomevermelho);
printf("%s pilotará o carro amarelo\n",nomeamarelo);
if (modo=='1')
{
printf("Modo de jogo selecionado: Jogo por tempo\n");
printf("Vence quem tiver o maior numero de voltas no final de %d minutos\n",qtdtempo);
}
else
{
printf("Modo de jogo selecionado: Jogo por voltas\n");
printf("Vence quem atingir primeiro as %d voltas\n", qtdvoltas);
}
printf("Dados corretos? (Pressione S para sim e N para Não)\n");
sim=getch();
if (sim=='n')
{
goto again;
}
}
Bem acontece o seguinte o programa roda bem até chegar aqui
printf("Digite o Nome do piloto do carro vermelho:\n");
scanf("%s ",&nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
scanf("%s",&nomeamarelo);
Neste momento ele mostra a mensagem do piloto do carro vermelho e pede para eu digitar algo scanf &nomeverlho funciona ok. porém após eu dar enter em vez dele me mostrar o printf nome do poiloto do carro amarelo, ele me pelo que eu digite mais alguma coisa o scanf &nomeamarelo, ai eu digito e só depois ele me mostra o printf(nome do carro amarelo).
Se eu trocar o scanf por um gets conforme abaixo
printf("Digite o Nome do piloto do carro vermelho:\n");
gets(nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
gets(nomeamarelo);
Ele me mostra os dois printf e pede para eu digitar alguma coisa eu digito e isto é armazenado na nomeamarelo, porém ele nem sequer pede a do nomevermelho.
Já quebrei a cabeça e não consegui entender o problema
OBS: Sei que não se deve postar o código inteiro, mas postei porque se eu pegar apenas o pedaço citado e compilar um programa a desgraça funciona normalmente, só não funciona quando fica dentro deste código.
Pergunta
Aircrash
Pessoal continuo desenvolvendo o menu do meu primeiro programa e depois de resolver o problema do switch agora me deparei com uma cena inusitada, vou postar o código inteiro aqui e explicar o por quê.
#include <conio.h>
#include <stdio.h>
#include <dos.h>
void main (void)
{
int modo, qtdtempo, qtdvoltas;
char nomevermelho[20];
char nomeamarelo[20];
char sim;
again:;
clrscr();
printf("****************************************************************\n");
printf(" Programa Autorama V0.5\n");
printf("****************************************************************\n");
printf("========================Menu Principal==========================\n");
printf("Digite a opção desejada:\n");
printf("(1) - Jogo por tempo\n");
printf("(2) - Jogo por voltas\n");
printf("(3) - Sair\n\n");
modo = getch();
switch (modo)
{ case '1':
printf("Quanto tempo? (Digite o tempo em minutos, mínimo 1 máximo 59)\n");
scanf("%d",&qtdtempo,"\n");
break;
case '2':
printf("Quantas voltas? (Mínimo 1 e máximo 99)\n");
scanf("%d",&qtdvoltas,"\n");
break;
case '3':
printf ("Saindo...");
delay(1000);
exit(1);
break;
default:
printf ("\nOpcao incorreta, tente novamente");
delay (1000);
goto again;
}
printf("****************************************************************\n");
printf("=======================Dados dos Jogadores======================\n");
printf("Digite o Nome do piloto do carro vermelho:\n");
scanf("%s ",&nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
scanf("%s",&nomeamarelo);
printf("****************************************************************\n");
printf("=======================Verifique os dados=======================\n");
printf("%s pilotará o carro vermelho\n",nomevermelho);
printf("%s pilotará o carro amarelo\n",nomeamarelo);
if (modo=='1')
{
printf("Modo de jogo selecionado: Jogo por tempo\n");
printf("Vence quem tiver o maior numero de voltas no final de %d minutos\n",qtdtempo);
}
else
{
printf("Modo de jogo selecionado: Jogo por voltas\n");
printf("Vence quem atingir primeiro as %d voltas\n", qtdvoltas);
}
printf("Dados corretos? (Pressione S para sim e N para Não)\n");
sim=getch();
if (sim=='n')
{
goto again;
}
}
Bem acontece o seguinte o programa roda bem até chegar aqui
printf("Digite o Nome do piloto do carro vermelho:\n");
scanf("%s ",&nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
scanf("%s",&nomeamarelo);
Neste momento ele mostra a mensagem do piloto do carro vermelho e pede para eu digitar algo scanf &nomeverlho funciona ok. porém após eu dar enter em vez dele me mostrar o printf nome do poiloto do carro amarelo, ele me pelo que eu digite mais alguma coisa o scanf &nomeamarelo, ai eu digito e só depois ele me mostra o printf(nome do carro amarelo).
Se eu trocar o scanf por um gets conforme abaixo
printf("Digite o Nome do piloto do carro vermelho:\n");
gets(nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
gets(nomeamarelo);
Ele me mostra os dois printf e pede para eu digitar alguma coisa eu digito e isto é armazenado na nomeamarelo, porém ele nem sequer pede a do nomevermelho.
Já quebrei a cabeça e não consegui entender o problema
OBS: Sei que não se deve postar o código inteiro, mas postei porque se eu pegar apenas o pedaço citado e compilar um programa a desgraça funciona normalmente, só não funciona quando fica dentro deste código.
Será que alguém me ajuda?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.