#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; }
Test Cases
Test Results
Input
led set 3 on
Expected Output