Ir ao conteúdo

Posts recomendados

Postado

Boa noite (ou bom dia, pois são 1:02). Estou tentando fazer um código de jogo da forca, porém quando fui começar pensei em dar um jeito de o usuário não poder inserir letras na hora de selecionar o número de jogadores, que vai de 1-6. Pesquisei algumas opções e encontrei uma função da biblioteca ''ctype.h" chamada "isdigit", porém acho que não estou a usando corretamente, pois o código não está funcionando da maneira que eu gostaria.

 

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<ctype.h>


main()
{
	setlocale(LC_ALL,"portuguese");
	
	char name[100], tentativa;
	int st=0, contador=0;
    
    	struct jogadores
	{
		char ident[50];
	} nomes[6];
	
	printf("\n\t\t\t\t\t\t\tJogo da Forca");
	
	L15:
	
	printf("\n\nEscolha o número de jogadores (máximo 6) : ");
	scanf("%d",&st);
	
	fflush(stdin);
	
	if(isdigit(st)!=0) /* Se for um número */
	{
		if(st!=1 && st!=2 && st!=3 && st!=4 && st!=5 && st!=6) // Verifica se o número digitado é algum dos permitidos na quantidade de jogadores (1-6)
	{
		system("cls");
		printf("\n\t\t\t\t\t\t\tJogo da Forca");
		goto L15;
	}	
	}

	else // Se não for um número
	{
		system("cls");
		printf("\n\t\t\t\t\t\t\tJogo da Forca");
		goto L15;
	}
	
	
	
	
	
	return 0;
}

 

Postado

isdigit() serve para verificar se um caractere (char) é um dígito, e não se aplica para o que você deseja fazer.

 

O scanf já está usando o especificador %d que serve para ler apenas números inteiros decimais, logo nenhuma letra será capturada como entrada.

 

O que você quer é checar se o número obtido é um número entre 1 e 6, então basta fazer um if assim:

if (st >= 1 && st <= 6){

}

Que checa se st é maior ou igual a 1 E menor ou igual a 6 ( 1 ≤ st ≤ 6 ).

Postado

@Celestino Alona Olá. Se é p um jogo crie uma função p isso. É apenas uma sugestão, já q o tópico já foi resolvido

#include <stdio.h>

int isNum(int num) {
    return (0 <= num && num <= 9);
}

int main() {

    int num;
    char ch;

    do {
        printf("digite um numero: ");
        scanf("%d", &num);
        scanf("%c", &ch); // limpar o buffer

        if (!isNum(num))
            printf("Erro: caractere invalido\n");

    } while (!isNum(num));

    printf("\nNumero: %d\n", num);

    return 0;
}

 

adicionado 15 minutos depois

Eu coloquei de 0 a 9. Você pode colocar d 1 a 6, de acordo com a necessidade

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!