0
int main(int argc, char *argv[]) {
    int i;
    for(i = 0; i < argc; i++)
        printf("arg %d: %s\n", i, argv[i]);
    return 0;
}

コマンドラインでプログラムを次のように実行するとしましょう

./program mom cat dad

argv[1]「お母さん」に等しい

argv[1]文字の配列を取得して、それらを個別にリンクされたリストに入れるにはどうすればよいですか?

4

3 に答える 3

2

argv[1]探している配列です。つまりargv[1][0]、たとえば最初の文字です。

于 2013-02-28T20:45:40.377 に答える
1

C では、文字列は常に単なるchar配列なので、文字argv[1]の配列になっています。たとえば、次のようにします。

for (int i = 0; i < strlen(argv[1]); i++) {
    printf("Character %d = %c\n", i, argv[1][i]);
}

C でリンク リストを実装するためのリソースは既にたくさんあります (例: here )。幸運を!

于 2013-02-28T20:46:57.417 に答える
0

すでにここにある回答に加えて、通常は文字列をリストにコピーすることに言及する価値があります。strdup(defined in ) を使用string.hして、文字列をコピーできます。例えば:

listnode->value = strdup(argv[1]);

つまり、コピーされた文字列を含む小さなメモリ スライスをリストが所有するようになったためfree、リスト ノードが解放されたときにそのポインタを呼び出す必要があります。

ただし、arguments 配列を変更することは許可されていることに注意してください。したがって、リストが提供された引数のみで動作している場合は、文字列データを変更する予定がある場合でも、必ずしもそれらをコピーする必要はありません (メモリを再割り当てする場合を除きます)。

各リスト ノードに単一の文字値を格納するだけの場合、そのような要件はありません。次のようなリスト構造を持つだけです。

struct node {
    char value;
    struct node *next;
};
于 2013-02-28T21:01:19.050 に答える