Ir ao conteúdo
  • Cadastre-se

C++ Scanf limitado para determinado numero de caracteres


Ir à solução Resolvido por devair1010,

Posts recomendados

Gostaria de saber como faço para meu programa pular para o próximo scanf quando o usuario digitar um numero de caracteres específico.

Ex:

int a,b,c;

 

scanf("%d", &a);

// Nesse o usuario deve digitar 2 numeros, e sem ter que apertar enter o programa deve pular para a proxima leitura automaticamente.

scanf("%d", &b);

// Mesmo procedimento.

scanf("%d", &c);

// Nesse ultimo só muda que o usuário deve inserir 4 digitos.

 

Minha dúvida é essa. Obrigado.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Rafael Carvalho Alencar     uma função para fazer esse procedimento não existe naturalmente na linguagem  c / c++ ,  então você pode criar uma função que faça isso  ,   aqui um exemplo de uma bem simples  , mas que funciona bem  nesse caso  com esses números que você disse   :

#include <stdio.h>
#include <conio.h>
#include <math.h>
int meu_scanf(int n){
    int j,q=pow(10,n-1),a=0;
    for(j=n;j>0;j--){
        a+=(getche()-48)*q;
        q=q/10;
    }
    return a;
}
int main(){
    int a,b,c;
    printf("Dois numeros ");
    a = meu_scanf(2);/* quantidade de números */
    printf("\nnumeros digitados -> %d\n\n",a);

    printf("Dois numeros ");
    b = meu_scanf(2);/* quantidade de números */
    printf("\nnumeros digitados -> %d\n\n",b);

    printf("Quatro numeros ");
    c = meu_scanf(4);/* quantidade de números */
    printf("\nnumeros digitados -> %d\n\n",c);

    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Sem usar getche da conio.h o mais próximo seria algo desse tipo:

#include <stdio.h>

int main()
{
    int a, b, c;
    
    scanf(" %2d%2d%4d", &a, &b, &c);

    printf("%d %d %d\n", a, b, c);
    
    return 0;
}

 

Ou para forçar 2-2-4 caracteres assim:

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

int main()
{
    char aa[3] = {0}, bb[3] = {0}, cc[5] = {0};
    int a, b, c;
    
    scanf(" %2c%2c%4c", aa, bb, cc);
    a = atoi(aa);
    b = atoi(bb);
    c = atoi(cc);
    
    printf("%d %d %d\n", a, b, c);
    
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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