Ir ao conteúdo
  • Cadastre-se
manbo

C++ C++ separando valores no scanf por espaço

Recommended Posts

alguem me ajuda pf, estou com um problema q é o seguinte, o cara digita 4 numeros separando-os por espaço, e o meu programa, so funciona quando ele dar enter, tipo, ele ta recebendo os 4 valores so dando o espaço, e dps do 4 valor, continua recebendo valores mas nao vai para lugar nenhum, e eu quero q quando receber o 4 valor ele pare de receber valores e execute o programa.

 

#include<iostream>

using namespace std;

int main(){
    int c1,c2,c3,c4;
   scanf("%i %i %i %i",&c1,&c2,&c3,&c4);
    if(c1==1){
        cout<<"1";
    }else if(c2==1){
        cout<<"2";
    }else if(c3==1){
        cout<<"3";
    }
    else if(c4==1){
        cout<<"4";
    }
    return 0;
}

 

o que o programa faz nao importa, so quero receber os valores com espaço e no quarto ele parar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@manbo Não basta adicionar %*[^\n] (parar leitura no enter) no após ultimo %i do scanf? Você não deu a instrução de para a leitura do buffer.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 26/05/2018 às 15:25, zopek disse:

@manbo Não basta adicionar %*[^\n] (parar leitura no enter) no após ultimo %i do scanf? Você não deu a instrução de para a leitura do buffer.

Ecomo eu paro a leitura do buffer? nao entendi esse " %*[^\n] ".

o que eu teria q modificar aqui?  scanf("%i %i %i %i",&c1,&c2,&c3,&c4);

Desde ja obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é c++ por que você utiliza scanf?

#include<iostream>
using namespace std;

int main(){
    int a,b,c;

    cin >> a >> b >> c;
    cin.sync(); //sincroniza a entrada com o buffer(A efeitos é como limprar o buffer).

    cout << a << ' ' << b << ' ' << c  << endl;

    return 0;
}

a entrada deveria ser 3 inteiros separados por espaços

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola ...!!!

Eu entendo que o autor gostaria de saber como capturar 4 valores, sem que para isso precise do [ENTER] no final. Também quero saber se possível é.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem apertar enter fica meio difícil. Nesse exemplo aí você entra 3 valores separados por espaço e só no ultimo você aperta enter. É isso o que você quer saber? Se for assim seria scanf("%d %d %d%*c", %a, &b, &c);

adicionado 5 minutos depois

A única função que captura teclas é getch poderia ser feito o uso do getch dentro de um laço que se repita X vezes tipo

iteração1 digito 111 e pulso espaço
iteração2 digito 222 e pulso espaço
iteração3 digito 333 e pulso espaço

getch ao detectar um espaço deveria saltar para a seguinte iteração; e ao chegar na ultima iteração deveria sair do laço

Compartilhar este post


Link para o post
Compartilhar em outros sites

independe do scanf, poderia ser função implementada. 

 

Por exemplo

Digite 4 valores inteiros
Entrada: 1 2 3 4 Saida: int{4, 3, 2, 1} foram digitados!

Nesta situação hipotética, temos captura de dados e progressão do programa com saída sem [ENTER] no final das entradas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente como imaginei, conio.h.

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme tenho entendido você precisa de uma função "não bloqueante"(non block) para isso, e não depende das linguagens C ou C++; é o sistema operativo quem controla isso, se quiser uma função parecida terá de buscar algo como "non blocking function in C".

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Como seria a saida desse programa? Seria dessa forma:

111

222

333

......

Aguardando e ate...

Luís.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×