Estou com problemas com o uso do comando fgets e do comando strcmp e gostaria da ajuda de vocês.
O código está comentado e acho que está bem claro nas partes com o problema. Vou adcionar só a parte que está defeituosa para não precisar postar a função inteira.
A função if ou while independente de qual eu usar não está comparando as strings com o strcmp corretamente, já alterei entre gets, fgets e scanf como podem ver o fgets está até comentado ali, nem apaguei que é para saber que já tentei.
Se alguém souber porque o código não compara as strings e não funciona corretamente eu fico agradecido, preciso dessa ajuda.
Shalom!
O código está comentado e acho que está bem claro nas partes com o problema. Vou adcionar só a parte que está defeituosa para não precisar postar a função inteira.
Código:
#include <stdio.h> #include <string.h> #include <stdlib.h> //exit() void main(void) { MenuPrincipal(); } void MenuPrincipal() { int escolha; char sair[4]; printf("\033[2J"); printf("Por favor escolha uma opcao:\n"); printf("1.Novo\n2.Carregar\n3.Sair\n\n"); printf("Selecione: "); scanf("%i", &escolha); switch(escolha) { case 1: printf("Chama funcao novo"); //implementar break; case 2: printf("Chama funcao carregar"); //implementar break; case 3: printf("Tem certeza que deseja sair?\n"); scanf("%s", &sair); //Vai para pegar a string mas não compara corretamente nem com while nem com if // fgets(sair,3,stdin); //O fgets está ignorando a função if e a função while(se usada) if(strcmp(sair,"Sim") || (sair,"SIM") || (sair,"sim") || (sair,"s") || (sair,"S")!=0) //strcmp para comparar string //Usar while ou if? { //Se eu usar "==0" o programa roda, se eu usar "==1" dá erro de comperação entre ponteiro e inteiro printf("Finalizando programa, obrigado por testar!\n"); printf("Pressione qualquer tecla para continuar...\n"); getchar(); exit(0); } else if(strcmp(sair,"Nao") || (sair,"NAO") || (sair,"nao") || (sair,"n") || (sair,"N")!=0) { MenuPrincipal(); } else { printf("Por favor insira uma opcao valida (Sim/Nao)\n"); printf("Pressione qualquer tecla para continuar...\n"); getchar(); MenuPrincipal(); } default: printf("Por favor insira uma opcao valida\n"); printf("Pressione qualquer tecla para continuar...\n"); getchar(); MenuPrincipal(); } //Fim do switch(escolha) } //Fim do MenuPrincipal()
A função if ou while independente de qual eu usar não está comparando as strings com o strcmp corretamente, já alterei entre gets, fgets e scanf como podem ver o fgets está até comentado ali, nem apaguei que é para saber que já tentei.
Se alguém souber porque o código não compara as strings e não funciona corretamente eu fico agradecido, preciso dessa ajuda.
Shalom!
Comment