2016-12-09 3 views
1

ファイルを比較するためのツールを作成しようとしていますが、対話するのが難しいと感じました。私は2つの操作をサポートしたい:1)私のファイルをメモリにロードする2)既にロードされたファイルを比較する。アイデアは対話式コマンドラインインターフェイスを作成するにはどうすればよいですか?

の端末で
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"); 
    } 
} 

を下回るようなものです

私はいくつかのMyVeryLongFileNameFile.fooAnotherVeryLongFileNameFile.barを比較したい場合は、私はちょうどdiff My\tab Ano\tab \enterを入力することができますし、それはオートは私のためにファイル名を完了します。

私のプログラムには、タブを使ってオートコンプリート、上/下を使って前のコマンドから選択するなど、このような機能があります。どのようにすればいいですか?

答えて

1

ncurses.h libraryを使用すると、これを達成するのに役立ちます。

+0

ありがとうございます!私はこれを勉強します – bbvan

+0

@interputed私はこのディスカッションを発見しました。ユーザーがタイプするために使用できるテキストフィールドが端末のように振る舞い、私はあなたの答えを見つけることができます。どうもありがとう。もし、ncursesライブラリが私が "本当の"端末(Ubuntu 14.04)に書いたテキスト行を送信し、その文字列をそこから実行させることができるかどうか聞いてもいいですか? – marcoresk

+0

Ubuntu端末に文字列を送るには、システムコールが必要です。ヘッダー '#include 'をインクルードすると、 'system()'を使うことができます。これは、端末で実行される文字列を受け取ります。 – interputed

関連する問題