Practice: Build a Command-Line Tool
Follow the step-by-step instructions to practice function pointers and arrays by building a command-line tool.
Introduction
This lesson is a mix between a practice session and a coding challenge. View it as a follow-along tutorial!
There won’t be test cases or tasks that you have to solve. We’ll code the application together, step by step. Before we build each part of the application, you’re encouraged to try to write the code on your own, based on the description.
Problem statement
We want to write the backbone of a command-line application. The application will feature several commands, and we need to add more commands in the future. Therefore, we should register the commands dynamically, without having to write a bunch of if
and else
cases for every single one. Moreover, we want to have multiple names for the same command. We should be allowed to register aliases for the same command without duplicating the code.
The application could be anything, but to make the example easier to follow, we’ll use a theme of a word processor.
- The commands can be
cut
,copy
,paste
, and other similar commands. - The same action can have multiple names. For example, we may want to register the same command twice, once as
search
and once asfind
. - In the future, we may add a lot of complex word processing commands, so the application must be easily extensible.
- Each command may have a different number of arguments or arguments of different types. We need to standardize the header of the command function handlers and