1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> スピーカ1:それでは修正しましょう その最後のプログラム。 3 00:00:01,960 --> 00:00:04,920 そして今回は、のは、明示的に割り当ててみましょう いくつかのメモリ 4 00:00:04,920 --> 00:00:06,550 ユーザの入力が記憶される。 5 00:00:06,550 --> 00:00:09,600 そのためには、のは、第一に焦点を合わせるましょう 我々はSを宣言したコード行 6 00:00:09,600 --> 00:00:11,590 以前にchar型のスターに。 7 00:00:11,590 --> 00:00:14,210 今回は、レッツ再宣言 それは次のよう - 8 00:00:14,210 --> 00:00:19,380 CHAR Sブラケット16、例えば、 閉じ括弧。 9 00:00:19,380 --> 00:00:23,690 >> 言い換えれば、のはなしにsを宣言してみましょう 長い文字のアドレスであること、 10 00:00:23,690 --> 00:00:26,610 むしろ、16文字の配列を。 11 00:00:26,610 --> 00:00:30,295 このように、ユーザは最大15を入力でき 文字と、まだ余地を残す 12 00:00:30,295 --> 00:00:31,570 ヌルターミネータ。 13 00:00:31,570 --> 00:00:35,870 それではコンパイル、保存に進みましょう、 このプログラムを実行します。 14 00:00:35,870 --> 00:00:40,770 scanf2ドットスラッシュscanf2を作る。 15 00:00:40,770 --> 00:00:45,100 それでは、ハローのような文字列を入力してみましょう、 そして我々はこんにちは感謝しています。 16 00:00:45,100 --> 00:00:46,440 >> さて、問題はまだある。 17 00:00:46,440 --> 00:00:50,140 私は唯一である、こんにちはで入力 ヌルのための5つの文字、プラス1 18 00:00:50,140 --> 00:00:50,445 ターミネータ。 19 00:00:50,445 --> 00:00:53,610 それだけで私たちを残し 6バイトの必要性。 20 00:00:53,610 --> 00:00:56,740 >> しかし残念ながら、我々だけ 合計で16を割り当てられる。 21 00:00:56,740 --> 00:01:01,305 もしそうであれば16のユーザーは、実際には種類 文字、又は17、又は数百 22 00:01:01,305 --> 00:01:04,410 文字は、我々はまだするつもりはない のためにメモリに十分な余裕を持って 23 00:01:04,410 --> 00:01:05,400 ユーザーの入力。 24 00:01:05,400 --> 00:01:07,750 そして実際には、これは作るものです ユーザ入力を取得するように 25 00:01:07,750 --> 00:01:08,940 一般的には難しい。 26 00:01:08,940 --> 00:01:12,270 我々は、実際に実装された理由は、これは 最初のget文字列関数 27 00:01:12,270 --> 00:01:13,900 CS50ライブラリ内の場所 - 28 00:01:13,900 --> 00:01:16,900 それらに対処する方法を見つけ出すために 状況ここでユーザーが中 29 00:01:16,900 --> 00:01:19,710 我々より多くの文字 当初想定。 30 00:01:19,710 --> 00:01:21,750 >> 率直に言って、完全にすることなく このプログラムを書き換え、 31 00:01:21,750 --> 00:01:23,290 手際よく解決する方法はありません。 32 00:01:23,290 --> 00:01:26,970 むしろ、私たちがしなければならないだろうことは得ることである で、ユーザ1から文字 33 00:01:26,970 --> 00:01:28,860 時間、何度も何度も。 34 00:01:28,860 --> 00:01:32,510 そして、それぞれの時点で我々は我々がしている実現した場合 メモリが不足して、我々は、しなければならない 35 00:01:32,510 --> 00:01:36,450 その点に戻って、再割り当て いくつかのより多くのメモリは、ユーザのをコピーする 36 00:01:36,450 --> 00:01:39,400 私たちの最初のチャンクから前の入力 新たにメモリーの、 37 00:01:39,400 --> 00:01:40,810 メモリの大きな塊。 38 00:01:40,810 --> 00:01:44,610 してから、再度そのプロセスを繰り返し、 ユーザーが提供して行われ、再びまで 39 00:01:44,610 --> 00:01:45,860 彼または彼女の入力。 40 00:01:45,860 --> 00:01:48,246