Bom, estou tentando fazer o programa voltar pro inicio, mas ele n volta, ele executa tudo certinho, pergunta se a pessoa quer fazer a operação novamente, mas quando eu digito o ‘s’ ele n reconhece, ele finaliza o programa. Help me plz
#include <stdio.h>
#include <stdlib.h>
int main(){
int x;
char op;
do{
printf("Informe o valor do inteiro");
do{
scanf("%i",&x);
if(x<0){
printf("INVALIDO");
}
}while(x<0);
if(x%2==0){
printf("E PAR");
}
else{
printf("E IMPAR");
}
printf("\nDESEJA FAZER A OPERACAO NOVAMENTE?");
scanf("%c%",&op);
}while(op == 's');
}
Nesse scanf() nota-se o uso de dois percents, antes e depois da tipagem de dado a ser lido. É interessante ressaltar que a função scanf(), para leitura de caracteres e de string, é horrível então recomendo a função getchar() ou a função getch() para leitura de caracteres, porém a função getch() não é padrão ANSI e só está disponível para Windows através da biblioteca conio.c.
Outro ponto que queria lhe chamar a atenção é que muito possivelmente haverá lixo no buffer do teclado, logo ele pode estar lendo essa sujeira do buffer ao invés da tecla pressionada. Pra isso limpe o buffer antes da leitura do caractere. Em Windows, use fflush(stdin), onde stdin é a stream (no caso standart input, ou seja, o teclado). Em GNU/Linux ou MacOS, use __fpurge(stdin).
(OBS.: A função fflush() também é usada para arquivos, por isso em Linux e em Mac não é aceitado a fflush pra esse caso)