All submissions

Implement a Simple Shell Command Parser

Code

#include <stdio.h>
#include <ctype.h>

char *seek_alnum(char *p) {

    if (!p || !*p)
        return NULL;

    while (
        (!(*p >= 'a') || !(*p <= 'z'))
        &&
        (!(*p >= 'A') || !(*p <= 'Z'))
        &&
        (!(*p >= '0') || !(*p <= '9'))
        &&
        (*p != '\0')
        )
        p++;

    return p;
}

char *seek_delimiter(char *p) {

    if (!p)
        return NULL;

    while ((*p != ' ') && (*p != '\0'))
        p++;
    
    return p;
}

#define MAXARG 10

void parse_shell_input(char *line) {
    int i;
    int argc = 0;
    char *argv[MAXARG] = {0};
    char *p = line;

    while (p = seek_alnum(p)) {
        argv[argc++] = p;
        if (argc >= MAXARG)
            break;
        p = seek_delimiter(p);
        if (*p)
            *p++ = '\0';
    }

    for (i = 0; i < argc; i++)
        printf("%s\n", argv[i]);
}

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

    parse_shell_input(line);
    return 0;
}

Solving Approach

 

 

 

Loading...

Input

led set 3 on

Expected Output

led set 3 on