>> سرور 1: دعونا إصلاح الآن هذا البرنامج الماضي.
وهذه المرة، دعونا تخصيص صراحة بعض الذاكرة فيه
سيتم تخزين المدخلات المستخدم.
للقيام بذلك، دعونا شحذ على أن أول سطر من التعليمات البرمجية حيث أعلنا ق
قبل أن تكون نجما شار.
هذه المرة، دعونا إعادة تعلن- على النحو التالي -
شار ق قوس 16، على سبيل المثال، قوس إغلاق.
>> وبعبارة أخرى، دعونا نعلن ق إلى ما لا يعد أن يكون عنوان حرف،
بل مجموعة من 16 حرفا.
بهذه الطريقة، يمكن للمستخدم اكتب في ما يصل إلى 15 أحرف والتي لا تزال تترك مجالا ل
فاصل فارغة.
دعونا المضي قدما لحفظ، ترجمة، وتشغيل هذا البرنامج.
جعل scanf2 نقطة مائلة scanf2.
دعونا الآن اكتب سلسلة مثل مرحبا، ونحن الشكر للمرحبا.
>> الآن، لا يزال هناك مشكلة.
أنا كتبته فقط في مرحبا، الذي لا يبعد سوى خمسة أحرف، بالإضافة إلى 1 لاغية
فاصل.
فإنه يترك لنا فقط حاجة لمدة ستة بايت.
>> ولكن للأسف، ونحن فقط تخصيص 16 في المجموع.
حتى إذا كان المستخدم أنواع الواقع في 16 حرفا، أو 17، أو عدة مئات من
أحرف، ونحن ما زلنا لن لديك مساحة كافية في الذاكرة ل
مدخلات المستخدم.
في واقع الأمر، وهذا هو ما يجعل الحصول على مدخلات المستخدم لذلك
من الصعب بشكل عام.
والواقع، وهذا هو السبب في أننا تنفيذها الحصول على وظيفة سلسلة في أول
مكان في المكتبة CS50 -
لمعرفة كيفية التعامل مع تلك الحالات التي تكون فيها أنواع المستخدم في
المزيد من الحروف مما كنا كان متوقعا في البداية.
>> بصراحة، دون تماما إعادة كتابة هذا البرنامج،
ليس هناك حل نظيفة.
بدلا من ذلك، ما علينا أن نفعله هو الحصول على حرف من مستخدم واحد في
الوقت، مرارا وتكرارا.
وعند كل نقطة إذا أدركنا نحن من الذاكرة، سيكون لدينا لفي
هذه النقطة نعود في إعادة توزيع و بعض مزيد من الذاكرة، نسخ المستخدم
المدخلات السابقة من أول قطعة لدينا من الذاكرة في الجديدة،
جزء أكبر من الذاكرة.
ثم كرر هذه العملية مرة أخرى و مرة أخرى حتى يتم توفير للمستخدم
له أو لها المدخلات.