1

私がやろうとしているのは、コマンドライン引数を個々の文字として配列に追加することです。したがって、ユーザーがプログラムを実行すると、./program bacon「ベーコン」は次のように配列に格納されます。

array k[]= {'b', 'a', 'c', 'o', 'n'};

私はプログラミングに不慣れであるということを十分に説明したことを願っています。

4

3 に答える 3

1

事実上、「ベーコン」は、nullで終了する文字列であるargv1を介して渡されます。char *これで、作成する配列もchar配列になります。

論理的には、入力(argv 1)を新しい配列にコピーするだけです。

strcpystrncpyなどの文字列操作関数を使用できます

注:このソリューションにコードを直接追加するわけではありません。自分で試してみる方がよいからです。

于 2012-10-19T01:17:40.717 に答える
0

mainに渡された引数を使用します。これを行う配列argv[1]はすでに取得されています。始めるには、このような記事を読むのが最善だと思います-http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html

于 2012-10-19T01:04:18.473 に答える
0

ですから、あなたはプログラミングに不慣れだと思いますが、確かにこれは見覚えがありますね。

int main (int argc, char **argv) {
  // ...
}

char **argvはcharポインターへのポインターですが、目的上、。と同等であると見なすことができますchar *argv[]。違いは微妙ですが、注目に値します。この警告は、Cでの文字列の動作を理解するために不可欠です。文字列char *argv[]はcharポインターの配列として明示的に入力されchar **argvますが、配列の場合もありますが、アクセスしようとするまでわかりません。そのような。それがあなたの主な機能であることを考えると、これは常に適切にインスタンス化されると考えるのが安全です。

とにかく、接線を越えて移動するchar **argvと、main関数にnullで終了する文字列の配列があります。あなたの質問から、私たちがたどるべき簡単な道を見ることができます。予想される引数は1つだけだと思います(そうでなければ、さまざまな状況に対処するケースを実装できるはずです)。

  1. argv[1]プログラムに渡された最初の引数()の長さを取得します。
  2. 配列に。の文字を入力しargv[1]ます。
  3. 配列を印刷して、機能することを確認します。

この関数では、 tomainの長さを格納し、sizeの配列を宣言します。次に、最初の文字列を文字ごとに繰り返し、各文字を配列の次の空きスロットに格納します。最後に、ループを繰り返し、配列の各項目を出力して、機能することを確認します。argv[1]nn

int main (int argc, char *argv[]) {
  int n = strlen(argv[1]);
  char arr[n];

  int i;
  for (i = 0; i < n; i++)
    arr[i] = argv[1][i];

  for (i = 0; i < n; i++)
    printf("%c ", arr[i]);

  printf("\n");
}

お役に立てれば。乾杯。

于 2012-10-19T01:38:46.803 に答える