>> বক্তা 1: এর কটাক্ষপাত করা যাক CS50 লাইব্রেরি টার সময়,
বিশেষভাবে তার GetInt ফাংশন.
এখানে আমরা প্রকৃত উৎস আছে GetInt জন্য কোড.
এবং এটি অত্যন্ত দীর্ঘ না যে বিজ্ঞপ্তি, এবং তার অধিকাংশই একটি লুপ গঠন -
যে সময়ে একটি অসীম লুপ - শুধু আসলে আমরা করেছি একটি মান প্রদান করে
আমরা আশা কি অর্জিত.
এর এটা ভিতর দিয়ে হেটে যাক.
>> প্রথমে এখানে লক্ষ্য করুন লুপ শুরু করার সময়.
আমরা কোড একটি লাইন আছে যে পরবর্তী লক্ষ্য করুন যে আসলে GetString আহ্বান
এবং একটি মধ্যে ফেরত মান সঞ্চয় পরিবর্তনশীল টাইপ স্ট্রিং, লাইন বলা.
আমরা তখন একটি বৈধতা পরীক্ষা কোনো কিছু করতে.
লাইন == নাল তারপর, আমরা অদ্ভুতভাবে INT_MAX ফিরে.
>> এখন এটা INT_MAX পরিনত হয় যে একটি বিশেষ ধ্রুবক অন্যত্র ঘোষণা
যে বৃহত্তম সম্ভব নির্দিষ্ট করে আপনি একটি মধ্যে উপস্থাপন করতে পারেন যে int
ভালো প্রোগ্রাম.
এখন আমরা ইচ্ছামত ফিরে যাওয়ার সিদ্ধান্ত নিয়েছে করেছি একটি প্রহরী মান হিসাবে INT_MAX
অসুস্থ, আমরা হিসাবে সংরক্ষিত করেছি যে এক একটি ত্রুটি অর্থাত ঘটেছে.
সুতরাং আমরা পরিশোধ মূল্য, অবশ্যই, হয় যে GetInt দৃশ্যত না
আসলে যত বড় একটি সংখ্যা প্রত্যাবর্তন INT_MAX, এটা করতে চায়, এমনকি যদি কারণ,
যে ফিরতি মূল্য সত্যিই উচিত আহ্বানকারী দ্বারা ব্যাখ্যা করা -
কেহ GetInt ব্যবহার করে -
কিছু ধরণের একটি ত্রুটি হিসাবে.
>> এর পরে, আমি ঘোষণা করেছি নোটিশ কোন int এন এবং একটি গৃহস্থালি গ.
কোড এই পরের লাইন, আমি একটি কল sscanf বলা ফাংশন, কথা প্রসঙ্গে
চার আর্গুমেন্ট.
স্ট্রিং যা লাইন, ব্যবহারকারীর একটি ফরম্যাট যা টাইপ করা, "% আমি% গ",
আমি ব্যবহারকারী যথাসাধ্য আশা করছি যে স্ট্রিং ঠিকানা অনুসরণ টাইপ,
এন, ও গ এর ঠিকানা.
জীবনে এখন আসুন sscanf উদ্দেশ্য প্রকৃতপক্ষে হয় খুঁজছি একটি স্ট্রিং স্ক্যান
বিশেষ বিন্যাসে যে প্রোগ্রামার যে দ্বিতীয় যুক্তি হিসেবে উল্লেখ করা হয়েছে.
এই ক্ষেত্রে,% আমি হয় ,% গ সেখানে হিসেবে.
Sscanf মধ্যে কোন int encounters সুতরাং যদি ব্যবহারকারীর ইনপুট, যে int-সংরক্ষণ করা হবে
এন নামক পরিবর্তনশীল, ভেতরে কারণ আমরা তৃতীয় হিসাবে প্রদান করে থাকেন
n এর ঠিকানা sscanf করার যুক্তি.
কোন sscanf প্রকৃতপক্ষে যেতে পারেন যে মানে আছে, এবং তাহাতে মূল্য আপডেট.
>> এখন, যদি ব্যবহারকারীর ধরনের আরো কিছু
এক বা একাধিক সংখ্যার তুলনায় -
অন্য কথায়, কিছু ধরণের একটি গৃহস্থালি -
যার ঠিকানা যে দ্বিতীয় পরিবর্তনশীল গ, আমরা তার চতুর্থ হিসাবে sscanf মধ্যে পাস
যুক্তি এছাড়া জনবহুল করা হবে.
এখন একটি জন্য চেক এর গোলমালে ব্যবহারকারী থেকে অতিরিক্ত অক্ষর
যে সে সহযোগিতা না হয়, তাহলে, এবং ঠিক কোন int বেশী এ ধরনের,
আমরা এই তা সনাক্ত করতে পারবেন ভাবে, সেই ক্ষেত্রে, sscanf কারণ
বোধক, 2 ফিরে যাচ্ছে যে স্থানধারক উভয় ভরা ছিল
মান সঙ্গে.
কিন্তু আমরা এর পরিবর্তে যে sscanf প্রত্যাশী করছি শুধুমাত্র ব্যবহারকারীর যার মানে, 1 প্রদান
কোন int দেওয়া.
>> আমরা কি করব যদি sscanf প্রকৃতপক্ষে 1 প্রদান?
ভাল, আমরা অবিলম্বে লাইন মুক্ত করে ব্যবহারকারী তারপর টাইপ করা, এবং আমরা
অবিলম্বে হচ্ছে, এন ফিরে কোন int অর্জিত.
অন্যথায়, sscanf 1 ফিরে, এবং না ব্যবহারকারী অতএব সহযোগিতা না করে,
আমরা এখনও লাইন মুক্ত, কিন্তু আমরা এখন পুনরায় চেষ্টা ইউজার প্রম্পট.
এবং আমরা যে ভেতরে এখনও কারণ অন্যথায় অসীম লুপ, প্রক্রিয়া
আবার শুরু, এবং হয়ত আবার, এবং হবে হয়তো আবার, যতক্ষণ ব্যবহারকারী আসলে
আমাদের কোন int প্রদান করে.