বক্তা 1: এর এখন ঠিক করি যে গত প্রোগ্রাম. এবং এই সময়, এর স্পষ্টভাবে বরাদ্দ দেওয়া কিছু স্মৃতি যা ব্যবহারকারীর ইনপুট সংরক্ষণ করা হবে. এটা করার জন্য, এর যে প্রথম প্রথম এ শান - পাথার যাক আমরা গুলি ঘোষিত যেখানে কোড লাইন পূর্বে একটি গৃহস্থালি তারকা হতে. এই সময়, এর যাক পুনরায় ঘোষণা তা নিম্নরূপ - গৃহস্থালির কাজ গুলি বন্ধনী 16, উদাহরণস্বরূপ, বন্ধ বন্ধনী. অর্থাৎ, এর কোন যাও গুলি ঘোষণা দেওয়া আর একটি চরিত্রের একটি ঠিকানা, কিন্তু 16 অক্ষরের পরিবর্তে একটি অ্যারে. এই পথ, ব্যবহারকারীর পর্যন্ত 15 টাইপ করতে পারেন অক্ষর এবং এখনও জন্য রুম ছেড়ে একটি নাল টারমিনেটর. সংরক্ষণ করুন এর এগিয়ে যাওয়া যাক, কম্পাইল, এবং এই প্রোগ্রাম চালান. Scanf2 ডট স্ল্যাশ scanf2 করুন. এর এখন হ্যালো মত একটি পংক্তি টাইপ যাক, এবং আমরা হ্যালো জন্য ধন্যবাদ জানান করছি. এখন, একটি সমস্যা এখনও আছে. আমি কেবল মাত্র, যা হ্যালো টাইপ করা নাল জন্য পাঁচটি অক্ষর, প্লাস 1 টারমিনেটর. এটা শুধুমাত্র আমাদের ছেড়ে ছয় বাইট জন্য প্রয়োজন. কিন্তু দুর্ভাগ্যক্রমে, আমরা কেবল মোট মধ্যে 16 বরাদ্দ. তাই আপনি যদি 16 সালে ব্যবহারকারী আসলে ধরনের অক্ষর, বা 17, বা একাধিক শত অক্ষর, আমরা এখনও যাচ্ছেন না জন্য মেমরির মধ্যে পর্যাপ্ত ফাঁকা স্থান আছে ব্যবহারকারীর ইনপুট. এবং সত্য, এই কি করে তোলে ব্যবহারকারীর ইনপুট পেয়ে তাই সাধারণভাবে কঠিন. আমরা বাস্তবায়িত কেন এবং প্রকৃতপক্ষে, এই হল প্রথম পেতে স্ট্রিং ফাংশন CS50 লাইব্রেরি জায়গা - যারা হ্যান্ডেল চিন্তা কিভাবে পরিস্থিতি যেখানে ব্যবহারকারী ধরনের মধ্যে আমরা বেশী অক্ষর প্রাথমিকভাবে অপেক্ষিত. সত্যি, ছাড়া সম্পূর্ণভাবে এই প্রোগ্রাম rewriting, কোন পরিষ্কার সমাধান আছে. বরং, আমরা কি করতে হবে পেতে হয় একটি সময়ে ব্যবহারকারী থেকে একটি অক্ষর সময়, আবার এবং আবার. এবং প্রতিটি পর্যায়ে আমরা আমরা করছি বুঝতে হলে মেমরি আউট, আমরা এ করতে হবে যে বিন্দু ফিরে যান এবং reallocate আরো কিছু স্মৃতি, ব্যবহারকারীর কপি আমাদের প্রথম খণ্ড থেকে পূর্ববর্তী ইনপুটের নতুন মধ্যে মেমরি, মেমরি বড় খণ্ড. এবং তারপর আবার যে প্রক্রিয়ার পুনরাবৃত্তি এবং ব্যবহারকারী প্রদান সম্পন্ন করা হয় আবার না হওয়া পর্যন্ত তার বা তার ইনপুট.