[音楽再生] DOUG LLOYD:すべての権利、そうしましょう コマンドライン引数について話しています。 そこで、これまでの過程でかなり 多くのすべてのプログラムの おそらく始めています this-- int型メイン空洞のような。 私たちは、収集してきました 我々はそれを必要とする場合は、ユーザー入力 以下のような我々のプログラム、で マリオ・プログラム、例えば、 イン・プログラムの指示によって。 我々は変更する場合は、必要に応じていません メインの宣言、 代わりにメイン我々の内部理由 ちょうどあなたがint型を得るためにそれを呼び出すことができ、言います。 どのように大きなあなたはピラミッドになりたいですか? それとも、得るためにそれを呼び出すことができます どのくらいの変化がfloat-- ユーザーへのI出力すべきか? 別の方法は、しかしあり、 我々は我々のユーザーが必要な場合 提供できるようにします 私たちのプログラムにデータ 代わりに、一方の実行時に プログラムが実行されています、 微妙な違いが、 時には非常に有用な1つ、 私たちは主宣言の新しいフォームを必要とします。 我々は、我々がしたい場合はint型のメイン空洞を使用することはできません コマンドラインで他のデータを収集 ユーザーがプログラムを実行したとき、 したがって、コマンドライン引数。 これらのコマンドラインを収集するには ユーザーからの引数、 あなたの宣言を変更 this-- int型のように見えることが主な メイン、オープン括弧、int型のargc、カンマ、 文字列ARGV、角括弧、 して、中括弧を開きます。 だから、すでに何を意味するのでしょうか? まあ、我々は、2つのパラメータを渡しています、 主にまたは引数、または入力。 一つは、と呼ばれる整数 ARGC、その他は何ですか? それは右、文字列の配列ですか? 我々は、角括弧表記を参照してください。 これは、文字列の配列です。 それは個々の文字列ではありません、 それは文字列の配列です。 そして、これらの二つの引数、argcおよびargvの、 どのデータをユーザーに知ってすることができます コマンドラインで提供してきました どのように多くの彼ら コマンドラインで提供します。 で動作するようにかなり便利なもの。 argcが、引数の数を表し あなたは方法によって、知っている必要があり、 あなたはARGC呼び出すことができること あなたはそれを好きな。 あなたが望んでいたものは何でもARGVを呼び出すことができます。 これらは、単に従来の名前です 我々はthem--引数の個数に使用することは、 我々は、第二​​に表示されますように、 引数ベクトル、ARGV。 しかし、あなたはそれらを呼び出す必要はありません argcとargvのあなたがしたくない場合は、 しかし従来は、それは我々が何をすべきかです。 とにかく、ARGC、引数の数。 これは、整数型の変数だとそう、など 我々は二つのことを持っている場合は、期待するかもしれません 我々は見つけることになるだろうということ これらが入力されているかを どのくらいのもの ユーザ入力された、argcがあります どのくらいを教えに行きます 入力したユーザーを詰め込みます。 だから、それはあなたの数を与えます コマンドライン引数のユーザー プログラムを実行したときに入力しました。 だからあなたのプログラムである場合 ドットを実行し、貪欲スラッシュ あなたの貪欲の内部 あなたの主な機能をプログラム 宣言int型メインのint ARGCを持っています、 角括弧のargv文字列は、 その場合のargcが1です。 今、私たちがいない気付きます どのように多くのものを数えます ユーザーは、プログラム名の後に入力しました。 プログラム名自体がカウント コマンドライン引数として。 そうで、貪欲スラッシュドット その場合は、argcが1です。 ユーザーはスラッシュ貪欲1024 CS50を入力した場合 その場合には、コマンドライン、ARGCで 3になります。 そして、私たちは道ので、これを知っています その文字列の間の分裂 かどうか検出します スペース、またはタブがあり、 またはそれらの間にそのような何か。 だから、ホワイトスペースの任意の量は、いわゆる、 コマンドライン入力した値の間 がいくつあるかを示しています。 だから貪欲スペース1024スペースを大幅に削減ドット CS50は、ARGC、その場合には、3です。 ARGVは引数ベクトルです。 ベクターは、方法によって、ちょうどです アレイの別の単語、 これは配列であります それは文字列を格納します。 要素ごとに1つの文字列であり、 その実際にユーザの文字列 コマンドラインで入力 プログラムが実行されたとき。 さて、そうであるように 任意の配列で、あなたの場合 の議論からリコール アレイ、ARGVの最初の要素 常に発見されようとしています ARGV角括弧ゼロで。 それが最初のインデックスです argv配列の。 will--と実際には、そのするように 常にプログラムの名前で、 いつもに配置されます ARGV角括弧ゼロ。 ARGVの最後の要素は常に発見されます ARGV角括弧のARGCマイナス1で。 あなたはなぜ見ていますか? どのように多くの要素を忘れないでください この配列に存在します。 まあ、我々はそれがだthat--知っています 要素のARGC番号。 ユーザーは、で3つのことを入力した場合 コマンドライン、argcが3です。 しかし、理由(c)に、ときに我々が取り組んでいます アレイと、配列の各要素、 またはのインデックスではなく 配列は、ゼロから始まります。 私たちは私たちの中に3つの要素がある場合は アレイは、我々は、argvのゼロの要素を持っています ARGV 1の要素、 argv 2の要素。 ARGVでどの要素がありません 3、サイズ3の配列。 だから、なぜ最後です ARGVの要素は、常にすることができます ARGV広場にあり ブラケットのargcマイナス1。 それでは、ユーザーが実行すると仮定しましょう follows--として貪欲プログラム 彼らは、コマンドラインのドットで入力した場合 貪欲なスペース1024スペースCS50を大幅に削減、 そして何らかの理由で我々はしました すでに私たちの貪欲なプログラムを用意 知っていて、これらと連携します コマンドライン引数。 私たちが働いていたとき、私たちは以前にはなかったです 貪欲な問題のためにその上に、 しかし、我々は今変更したとしましょう そのように、我々は、プロセスを実行します 何らかの方法で、コマンドライン引数。 この場合には、ゼロをargvを ドットスラッシュは貪欲です。 ARGV 1は何ですか? まあ、それは右、1024年ですか? それは1024年であるが、ここです 本当に重要なdistinction-- あなたはARGVのデータ型を覚えていますか? それは右、文字列を格納しますか? しかし、それは1024年のように見えます 整数値です。 これは本当に重要です 区別があり、実際には あなたの何かになろう 後で問題が発生することがあります。 ARGVですべてがあります 文字列として保存されました。 だから、ARGV 1の内容は、 文字列1、ゼロ、2、4、 これら4つの文字で構成される。 これは、ユーザーが入力したかのようです 1、ゼロ、2、4 個々の文字や文字など。 これは、整数1024ではありません ので、あなたが直接することはできません int型1000言ってそれに取り組む、または むしろint型xがargvの1マイナス24に等しいです。 直感的に、あなたはそのことを考えるかもしれません 、[OK]を、よくそれは1024マイナス24だとして、 そうX 1000に等しいです。 実際に、それは、そうではないです ARGV 1は、文字列であるためです。 文字列1024。 今することができる機能があります 整数に文字列を変換するために使用されます。 私はあなたのためにそれを台無しにしません 今、私は確信しているZamyla でそれをご紹介させていただきます 今後の課題のためのウォークスルー。 しかし、あなたも見つけることができます 言い訳like--問題 私、希望の機能 参考文献50でこれを行うには、 あなたはリファレンスガイドに行けば あなたがその機能を見つけることができます あなたのために、この変換を行います。 しかし、再び、ウォークスルーで 今後の課題のために、 Zamylaはさせていただきます 何の関数を教えてくれ それは、変換することです 整数1024に文字列1024。 すべての権利、というように移動します。 私たちは、argvのゼロを紹介してきました、 私たちは、argvの1をカバーしてきました。 ARGV 2には何ですか? CS50。 その1のおそらく 一目瞭然。 ARGV 3には何ですか? さて、再び、私たちは本当に知らない、右? 我々は、サイズ3の配列を持っています それはどのように多くの要素ユーザーズ コマンドラインで入力しました、 私たちは3をargvをする行けば、 私たちは今逸脱しています 私たちの配列の境界。 コンパイラは、私たちがこれを行うようになります それとは直感的な問題はありません、 実際の面で何が起こっているのか 発生する、私たちは本当に知りません。 それは何であるかに依存します メモリ場所に位置 argvの3つがあると予想されます。 そして、私たちは終わる可能性 スコット無料遠ざかっ。 場合は特に、より多くの可能性が高いではありません 対照的に、あなたはARGVで作業しています 他の配列へ それは、私たちのプログラムにです 我々は、おそらく苦しむことになるだろう セグメンテーションフォールト。だからもう一度、 境界を踏み越えしないようにしてください あなたの配列、特にARGVの その高度与えられました あなたのプログラムで重要。 私はダグロイドです。 これはCS50です。