• 0
Sign in to follow this  
DiegoAugusto

(Resolvido) Leitura no Terminal

Question

Galera, tem como a função scanf() ler uma sequência de char no terminal excluindo o " "(espaço em branco).

Exemplo:

Lendo no terminal:

# * # *
Queria saber uma forma de ler esses valores usando:
scanf("%c", &variavel1);
scanf("%c", &variavel2);
scanf("%c", &variavel3);
scanf("%c", &variavel4);
Mas sem atribuir as variaveis o valor " "(espaço em branco). Sendo assim,
variavel1 = #
variavel2 = *
variavel3 = #
variavel4 = *

[]'s

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Após cada caractere há um espaço, é isso? Se sim, você pode usar:

scanf("%c ", &variavel);
Do contrário, acho que não é possível só com um scanf. A forma mais fácil em que consigo pensar seria fazer a leitura sequencial dos caracteres e ignorar os espaços em branco. Algo como:
char str[200];
char *p = str;
char ch;
while (ch = getchar(), ch != '\n' && ch != EOF)
{
    if (ch != ' ')
    {
        *p++ = ch;
    }
}
*p = 0;
puts(str);

Share this post


Link to post
Share on other sites
  • 0

É a intenção era ler uma sequencia de caracteres ignorando o ' '( espaço em branco). Para facilitar leituras de problemas tipo SPOJ.

De qualquer forma, muito obrigado pela sua atenção!!!

Share this post


Link to post
Share on other sites
  • 0

Dê uma olhada na biblioteca limits

Lá provavelmente tem o que você procura.

Att.,

Pedro

Share this post


Link to post
Share on other sites
  • 0

Eu consegui da seguinte forma:

Tendo como entrada:

* * +
Usei:
char c1, c2, c3

scanf(" %c");
scanf(" %c");
scanf(" %c");
Então atribui corretamente:
c1 = *
c2 = *
c3 = +

Facilita pra tipos de problemas que recebem uma linha com vários caracteres, não atribuindo o ' '(espaço em branco) a variável, pois não interessa.

Muito obrigado pela sua atenção Pedro.

Share this post


Link to post
Share on other sites
  • 0

Sem problema, :D.

Share this post


Link to post
Share on other sites
  • 0

Você está se referindo a algum problema específico do SPOJ? Normalmente eu acho mais fácil simplesmente ler a linha inteira e depois ir processando aos poucos. Quando necessário (raramente), uso a dica de colocar o espaço no scanf pra ignorar o caractere.

Obs.:

Marquei o tópico como Resolvido.

Share this post


Link to post
Share on other sites
  • 0

É porque trabalhar com String em C é meio complicado. O problema que eu resolvi recebia números e caracteres em uma mesma linha, e o scanf() estava associando a umas das variáveis do problema o ' '(espaço em branco), o que não era nada interessante. De qualquer forma obrigado pela ajuda, consegui resolver o problema da forma descrita acima.

Obrigado a todos.

[]'s

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this