Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>
void string(char *str);
void decode_status(uint8_t status_reg) {
    // Your logic here
    char *meaning[8]= {"Power On", "Error", "Tx Ready", "Rx Ready", "Overheat", "Undervoltage", "Timeout", "Reserved"};
      for(int i=0; i<8; i++){
      if(status_reg & (1<<i))
      {
       string(meaning[i]);
       printf("\n");
      }
      }
}
void string(char *str)
    {
     while(*str)
     {
        printf("%c", *str);
        str++;
     } 
    }

int main() {
    uint8_t reg;
    scanf("%hhu", &reg);
    decode_status(reg);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready