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 للقيام بذلك، دعونا شحذ على أن أول سطر من التعليمات البرمجية حيث أعلنا ق 6 00:00:09,600 --> 00:00:11,590 قبل أن تكون نجما شار. 7 00:00:11,590 --> 00:00:14,210 هذه المرة، دعونا إعادة تعلن- على النحو التالي - 8 00:00:14,210 --> 00:00:19,380 شار ق قوس 16، على سبيل المثال، قوس إغلاق. 9 00:00:19,380 --> 00:00:23,690 >> وبعبارة أخرى، دعونا نعلن ق إلى ما لا يعد أن يكون عنوان حرف، 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 أنا كتبته فقط في مرحبا، الذي لا يبعد سوى خمسة أحرف، بالإضافة إلى 1 لاغية 18 00:00:50,140 --> 00:00:50,445 فاصل. 19 00:00:50,445 --> 00:00:53,610 فإنه يترك لنا فقط حاجة لمدة ستة بايت. 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 والواقع، وهذا هو السبب في أننا تنفيذها الحصول على وظيفة سلسلة في أول 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 بدلا من ذلك، ما علينا أن نفعله هو الحصول على حرف من مستخدم واحد في 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