Jump to content
Fórum Script Brasil
  • 0

Ajuda - Recebendo Dados Scanf / C


Luiz Pereir

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

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

Edited by Saint Kidd
Link to comment
Share on other 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 to comment
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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...