Cabelim 0 Denunciar post Postado Maio 22, 2012 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
Igor F. 1 Denunciar post Postado Maio 22, 2012 Tenta por o system("pause"); antes do return 0;. Compartilhar este post Link para o post Compartilhar em outros sites
Cabelim 0 Denunciar post Postado Maio 22, 2012 Já fiz, mas continua com o mesmo resultado. Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Maio 22, 2012 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
Cabelim 0 Denunciar post Postado Maio 22, 2012 Agora deu! Valeu pessoal, grato pela ajuda! :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 23, 2012 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
quitZAUMMM 18 Denunciar post Postado Maio 26, 2012 Vale a pena dar uma olhada: http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ []s Compartilhar este post Link para o post Compartilhar em outros sites