bbvan
bbvan

Reputation: 658

How do I make an interactive command line interface?

I am trying to write a tool to compare my files but I found it difficult to interactive with. I want to support 2 operations: 1) load my files into memory 2) compare the files already loaded.

The idea is like below

while (true) {
    getline(&line, &linesize, stdin);
    if (strlen(line) < 2) continue;
    token = strtok(line, DELIM);
    if (!strcmp(token,"load")) {
        puts("you want to load something");
    } else if (!strcmp(token, "compare")) {
        puts("you want to compare something");
    } else if (!strcmp(token, "exit")) {
        puts("exiting...");
        exit(1);
    } else {
        puts("Cannot parse, try again");
    }
}

In terminal, if I want to compare some MyVeryLongFileNameFile.foo and AnotherVeryLongFileNameFile.bar, I can just type diff My\tab Ano\tab \enter and it will auto completes the filenames for me.

I would like to also have these kind of features in my program, like using tab to autocomplete, using up/down to choose from previous commands, etc. How should I achieve this?

Upvotes: 1

Views: 957

Answers (1)

interputed
interputed

Reputation: 93

Using the ncurses.h library help you accomplish this.

Upvotes: 1

Related Questions