Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda - Recebendo Dados Scanf / C


Luiz Pereir

Pergunta

Boa tarde pessoal,

Estou com um problema aqui. A intenção do meu problema é receber um status em hexadecimal sendo eles 8 bits binários ou seja (exemplo: base 2= "0000 1010" base 6=0x0A)

Devo armazenar esses bits em uma variável e depois comprar com diversos status exemplo o status 0000 0010 significa que a maquina está ligada.

Fazer as comparações estou sem problemas. O problema é que eu não consigo receber esses dados corretos. Penso eu, pois sempre que vou fazer as comparações ela não retorna a correta...

Até então eu fiz assim:

unsigned short int status=0x00;

printf("Digite o Status: ");

scanf("%X",&status);

puts (status & 0x02 ? "Maquina Ligada" : "Maquina Desligada");

mas mesmo eu digitando por exemplo "11111111" ele retorna Maquina Desligada, alguém pode me ajudar por favor?

Obrigado.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Acho que o problema está aqui.

puts (status & 0x02 ? "Maquina Ligada" : "Maquina Desligada");
Isso é pra dar uma condição, teria que ser assim.
puts=(status & 0x02)? Maquina Ligada: Maquina Desligada;

Se não conseguir, tenta revisar a parte (status & 0x02) pra ver se é essa mesma a condição necessária.

Editado por Saint Kidd
Link para o comentário
Compartilhar em outros sites

  • 0

na verdade sua comparação está certa, o problema é na entrada de dados.

a ling. C não tem um tipo de entrada para o formato binario.

O exemplo abaixo recebe uma string no formato binario e coloca numa estrutura de bits.

Ai você decide o que quer fazer. Eu optei por testar direto o bit de interesse (o 2).

Esse exemplo tá muito básico mas espero que ajude a elucidar sua idéia.

Abs



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

void main(void)
{
struct TBITS
{
char b7:1;
char b6:1;
char b5:1;
char b4:1;
char b3:1;
char b2:1;
char b1:1;
char b0:1;
} bits;

char status[9];
scanf("%s", status);
bits.b7 = status[0] - '0';
bits.b6 = status[1] - '0';
bits.b5 = status[2] - '0';
bits.b4 = status[3] - '0';
bits.b3 = status[4] - '0';
bits.b2 = status[5] - '0';
bits.b1 = status[6] - '0';
bits.b0 = status[7] - '0';

puts(bits.b1 ? "Ligada" : "Desligada");
getch();


[/codebox]

...?!?!

Acho que o problema está aqui.

[code]puts (status & 0x02 ? "Maquina Ligada" : "Maquina Desligada");[/code]
Isso é pra dar uma condição, teria que ser assim.
[code]puts=(status & 0x02)? Maquina Ligada: Maquina Desligada;[/code]

Se não conseguir, tenta revisar a parte (status & 0x02) pra ver se é essa mesma a condição necessária.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...