Ir para conteúdo

POWERED BY:

Arquivado

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

Cabelim

[Resolvido] Janela fecha antes de poder ler os resultados

Recommended Posts

Oi pessoal, estou com um problema com meu programa em C. Eu criei ele no CodeBlocks e rodou perfeito, mas depois tentei rodar ele como application no Windows 7 e a janela do programa fecha antes que eu possa ler os resultados, mesmo colocando uma função para ler o que o usuário digitou no final do programa. Aqui está o código:

 

int main()
{
   int model;
   char letter;

   printf("\nBem-vindo ao sistema de busca de cartuchos HP\n\n""Digite o numero do modelo da impressora: (ex.: 1660)\n");
   scanf("%i", & model);

   if (model == 1320 | model == 1330 | model == 1341 | model == 1360 | model == 1420 | model == 1430 | model == 1445 | model == 1455 | model == 1460 | model == 1520 | model == 1560 |
       model == 2320 | model == 2330 | model == 2345 | model == 2360 | model == 2430 | model == 2445 | model == 2460 | model == 335 | model == 340 | model == 350 | model == 380 | model == 1100 |
       model == 2110 | model == 2140 | model == 218 | model == 2210 | model == 2240 | model == 4135 | model == 4140 | model == 4180 | model == 3910 | model == 3915 | model == 3920 | model == 3930 |
       model == 3940 | model == 3640 | model == 3680 | model == 4315 | model == 1410 | model == 1250 | model == 3180)
       printf("Essa impressora utiliza os cartuchos: 21b e 22.\n");

   else
       if (model == 3320 | model == 3420 | model == 3425 | model == 3520 | model == 3550 | model == 3620 | model == 3650 | model == 3651 | model == 3740 | model == 3745 | model == 3747 |
           model == 3843 | model == 3845 | model == 3847 | model == 4315 | model == 5605 | model == 5610 | model == 1311 | model == 1315 | model == 1240)
           printf("Essa impressora utiliza os cartuchos: 27b e 28.\n");

           else
               if (model == 450 | model == 5150 | model == 5550 | model == 5650 | model == 5850 | model == 9650 | model == 9670 | model == 9680 | model == 4110 | model == 4215 | model == 5505 |
                   model == 5510 | model == 5605 | model == 5610 | model == 6110 | model == 7150 | model == 7260 | model == 7350 | model == 7450 | model == 7550 | model == 7660 | model == 7755 |
                   model == 7760 | model == 7960 | model == 1110 | model == 1209 | model == 1210 | model == 1311 | model == 1315 | model == 1350 | model == 2110 | model == 2175 | model == 2210 |
                   model == 2410 | model == 2510 | model == 1240)
                   printf("Essa impressora utiliza os cartuchos: 56 e 57.\n");

               else
                   if (model ==1660 | model == 2530 | model == 2545 | model == 2560 | model == 2660 | model == 2680 | model == 5545 | model == 5560 | model == 2430 | model == 2480 | model == 4210 |
                       model == 4235 | model == 4240 | model == 4435 | model == 4440 | model == 4480 | model == 4580 | model == 100 | model == 4635 | model == 4640 | model == 4650 |
                       model == 4680 | model == 4740 | model == 4750 | model == 4780 | model == 4795 | model == 100)
                       printf("Essa impressora utiliza os cartuchos: 60b e 60.\n");

                   else
                       if (model == 4260 | model == 4250 | model == 4285 | model == 4345 | model == 4350 | model == 4380 | model == 4385 | model == 4440 | model == 4450 | model == 4480 |
                           model == 4580 | model == 5225 | model == 5240 | model == 5250 | model == 5280 | model == 5345 | model == 5360 | model == 5580 | model == 5750 | model == 5780 | model == 6450 |
                           model == 6480)
                           printf("Essa impressora utiliza os cartuchos: 74 e 75.\n");

                       else
                           if (model == 4145 | model == 4155 | model == 4160 | model == 5440 | model == 3140 | model == 3150 | model == 3180 | model == 4140 | model == 4150 | model == 4180 | model == 7850 |
                               model == 1507 | model == 1510)
                               printf("Essa impressora utiliza os cartuchos: 92 e 93.\n");

                           else
                               if (model == 1000 | model == 1050 | model == 2000 | model == 2050 | model == 3000 | model == 3050)
                                   printf("Essa impressora utiliza os cartuchos: 122.\n");

                               else
                                   if (model == 4540 | model == 4550 | model == 4580 | model == 4660 | model == 4680 | model == 4500)
                                       printf("Essa impressora utiliza os cartuchos: 901.\n");

                                   else
                                       printf("Nada consta!.\n");

   printf("\nPressione enter para continuar");
   scanf("%*c");

   return 0;
}

 

Já tentei system("pause"); getchar();... Alguém sabe o que está acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cabelim,

 

No scanf:

scanf("%i", & model);

Faça o seguinte:

scanf("%i%*c", & model);

 

Motivo: Quando o usuário digita um numero e pressiona enter, ou seja, um caracter de nova linha para indicar ao compilador que terminou a entrada de dados. O decimal é retirado do buffer de entrada, mas o \n não.

Lá no final do código o scanf("%*c"), system("PAUSE") ou getchar() aguardam um \n que ja está no buffer de entrada. Por isso passa reto por eles.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS: evite system("PAUSE"), é código não portável e lento e, por isso, não deve ser usado.

 

Porque não usa algo assim?

 

puts("Aperte ENTER para continuar...");
getchar();

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.