Ir ao conteúdo
  • Cadastre-se

Duvida com repetição


Julianosg
Ir à solução Resolvido por atlos,

Posts recomendados

olá! sou novo em C gostaria de saber se tem alguma maneira de fazer isso:

 

" do{   

      printf("Digite um numero);

      scanf("%d", &n);

       }while(n =! int);  "

 

onde, se eu digitar qualquer carácter/valor que não seja inteiro ele repita até ser inteiro, já pesquisei e não achei nada que me esclarecesse. Se puderem ajudar, obrigado!

Link para o comentário
Compartilhar em outros sites

faz sua propria funcao pra verificar se uma string contem somente numeros ou nao

bool IsNumber(char* Texto,int Tamanho ) {  int iChar;  for (iChar = 0; iChar < Tamanho; iChar++) {      // encontrei no google que a funcao isalpha retorna verdadeiro       // se o caractere é alfabetico      if (isalpha(Texto[iChar]) == TRUE) {         return FALSE;  }  return TRUE;}

nao testei o codigo mas testa aih

Link para o comentário
Compartilhar em outros sites

hum..sei bulhufas sobre a biblioteca de C,mas se voce ta pegando a entrada com um int e é digitado um ponto flutuante, dependendo do tipo de arredondamento que o compilador faz(no VS ele trunca),isso era pra deixar a stream com o valor depois do ponto ainda,sabendo disso em teoria era só testar se a stream ainda ta cheia..

Link para o comentário
Compartilhar em outros sites

  • Solução

eu fiz uns testes aqui(isso realmente me encucou o.o),vi que com fgets da pra fazer uma gambiarrazinha(se tiver algum jeito mais fácil avisem por favor),por exemplo se for digitado um numero de ponto flutuante ele trunca e ficaria na stream ainda o ponto e o valor depois do ponto,então voce pode fazer alguma coisa desse tipo

char cp[2];   int n = 0;printf("Digite um numero");scanf("%d",&n);fgets(cp,2,stdin);         //le o resto que ficou na stream de stdin depois do inteiro e poe em cp      if(cp[0] == '.' )          //testa se foi colocado um ponto em cp,se foi então r será 1{  //se entrar aqui então é porque o numero é um pf e retorna o loop}

pra quando for digitado um caractere em vez de um numero pode ver esse exemplo aqui

http://forum.clubedohardware.com.br/forums/topic/1068322-problemas-com-a-valida%C3%A7%C3%A3o-da-vari%C3%A1vel-em-c/

 

deve ter jeito mais fácil pra fazer isso,mas esse é o que eu sei agora

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!