Check if the String Numeric or Alphabetic

Used bitfields 

#include <stdio.h>
#include <stdint.h>

typedef struct  {
    uint8_t M_flg : 1;
    uint8_t N_flg : 1;
    uint8_t A_flg : 1;
} Flags;

void classify_string(const char *str) {
    char curr;
    Flags flag = {0};       //Declared a struct to hold flags and initiliaze to 0
    if(*str == '\0'){
        printf("MIXED");
        return;
    }                       //edge case of empty
    while(*str){
        curr = *str;
        if(curr >= '0' && curr <= '9'){
            flag.N_flg = 1;
        }
        else if( (curr >= 'A' && curr <= 'Z') || (curr >= 'a' && curr <= 'z') ){
            flag.A_flg = 1;
        }
        else{
            flag.M_flg = 1;
            break;
        }


        str++;
    }
    if((flag.M_flg) || (flag.A_flg && flag.N_flg) ){
        printf("MIXED");
    }
    else if(flag.A_flg){
        printf("ALPHABETIC");
    }
    else{
        printf("NUMERIC");
    }
    
}

int main() {
    char str[101];
    fgets(str, sizeof(str), stdin);

    // Remove newline
    uint8_t i = 0;
    while (str[i]) {
        if (str[i] == '\n') {
            str[i] = '\0';
            break;
        }
        i++;
    }

    classify_string(str);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

123456

Expected Output

NUMERIC