0

C で simpleShell プログラムの parseCmd メソッドを作成し、区切り文字の空白の前に各引数を格納して、args[] 配列に格納します。ただし、それぞれのパラメーターを含む引数をリンクされたリストに追加しようとしていますが、それらを取得するのに問題があります。

たとえば、次のように入力するlsと、次のようになります。

args[0] = "ls";

そして、私がタイプするときls -l、私は欲しいです;

args[0] = "ls";
args[1] = "-l";

ここでやろうとしているのは、「-」引数が検出された場合、それを前の引数「ls」に追加し、別の文字列「ls -l」として保存して、linkedList (既に実装されている) に格納することです。

これが私の方法です。

void parseCmd(char* cmd, char** args)
{       
    int i;

    for(i = 0; i < MAX_LINE; i++) {
        args[i] = strsep(&cmd, " ");

        if (args[i] != NULL)
            printf("--> %s \n",args[i]);

        if(args[i] == NULL) break;
    }
}

編集:

私は次のことを試しました

if (strchr(args[i], '-'))
    printf("--> %s \n", args[i]);

しかし、私はセグフォルトを取得しています。

4

1 に答える 1