私が何をしたいことは、このようなものだと思う:あなたは、あなたがそれをすべて解放する直前に「コマンド」と「引数」で望むものを行うことができます
while (1)
{
char *line = malloc(128); // we need to be able to increase the pointer
char *origLine = line;
fgets(line, 128, stdin);
char command[20];
sscanf(line, "%20s ", command);
line = strchr(line, ' ');
printf("The Command is: %s\n", command);
unsigned argumentsCount = 0;
char **arguments = malloc(sizeof(char *));
while (1)
{
char arg[20];
if (line && (sscanf(++line, "%20s", arg) == 1))
{
arguments[argumentsCount] = malloc(sizeof(char) * 20);
strncpy(arguments[argumentsCount], arg, 20);
argumentsCount++;
arguments = realloc(arguments, sizeof(char *) * argumentsCount + 1);
line = strchr(line, ' ');
}
else {
break;
}
}
for (int i = 0; i < argumentsCount; i++) {
printf("Argument %i is: %s\n", i, arguments[i]);
}
for (int i = 0; i < argumentsCount; i++) {
free(arguments[i]);
}
free(arguments);
free(origLine);
}
。
プログラムはコマンドラインパラメータを使用していますか、それともキーボードまたはファイルを読み込んでいますか? IDは何ですか? – gbulmer
私は通常、ループとif文を使って処理しましたが、シェルコマンドを処理するためのライブラリがあるかどうか疑問です。もしあなたが望むなら、おそらくあなたはtypeコマンドを特定し、switch文を使用する最初の文字を持つことができます(-Pはprint、-Rはタイプの追加コマンド、-Eはexitなどです) –
これはコマンドに関するものではありませんプログラムの実行中にキーボードからユーザーコマンドを読み込むことができます。 Pythonでは "shlex"のようなものがあります。 – DavidMG