Ir ao conteúdo
  • Cadastre-se

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


manbo

Posts recomendados

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.

Link para o comentário
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.

Link para o comentário
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

 

 

Link para o comentário
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

Link para o comentário
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.

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