1 00:00:00,000 --> 00:00:00,180 2 00:00:00,180 --> 00:00:02,920 >> বক্তা 1: এর একটি প্রোগ্রাম লিখুন যাক যে বিনা ব্যবহারকারী থেকে একটি পংক্তি পায় 3 00:00:02,920 --> 00:00:05,700 CS50 লাইব্রেরি এর ব্যবহার GetString ফাংশন. 4 00:00:05,700 --> 00:00:08,720 এটি করার জন্য, আমরা এগিয়ে যান এবং ব্যবহার করব scanf, ফাংশন যে GetString 5 00:00:08,720 --> 00:00:10,950 ফাংশন আসলে ব্যবহার ফণা নীচে. 6 00:00:10,950 --> 00:00:13,780 কিন্তু আমি ইচ্ছাকৃতভাবে এই কাজ করতে যাচ্ছি একটি বগী ভাবে. 7 00:00:13,780 --> 00:00:17,230 আমি মনে করি একটি উপায় যে করতে যাচ্ছি সঠিক হতে, কিন্তু এটি দেখা যাচ্ছে যে 8 00:00:17,230 --> 00:00:19,380 আমার ভাবনাটি যাচ্ছে বেশ, বেশ দ্বিধান্বিত হবেন. 9 00:00:19,380 --> 00:00:20,800 এবং সত্য, বেশ বিপজ্জনক. 10 00:00:20,800 --> 00:00:24,750 কারণ আমি প্রায় করছি মত বাগ প্রতিপক্ষ দ্বারা শোষিত করা যাবে না 11 00:00:24,750 --> 00:00:28,870 যেমন যে আপনার মেশিনে বা আপনার প্রোগ্রাম সম্ভাব্য ভার গ্রহণ করা যেতে পারে. 12 00:00:28,870 --> 00:00:30,200 >> নিম্নরূপ এর শুরু করা যাক. 13 00:00:30,200 --> 00:00:33,540 প্রথমত এর আমাদের স্ট্রিং ঘোষণা করা যাক, অন্যথায়, একটি গৃহস্থালি তারকা হিসাবে এখন পরিচিত 14 00:00:33,540 --> 00:00:34,750 এবং এটি গুলি কল. 15 00:00:34,750 --> 00:00:39,400 পরবর্তী একটি স্ট্রিং জন্য ব্যবহারকারীকে অনুরোধ জানানো দেয়, "অনুগ্রহ করে স্ট্রিং." হিসাবে এবং 16 00:00:39,400 --> 00:00:44,250 এর এখন ব্যবহারকারী থেকে স্ট্রিং পেতে দেওয়া উদ্ধতি মূল্যউদ্ধৃতি, "% s.", scanf ব্যবহার মধ্যে 17 00:00:44,250 --> 00:00:47,760 অন্য কথায়, এর যে আমরা scanf অবহিত যাক আসলে একটি স্ট্রিং পেতে আশা করি 18 00:00:47,760 --> 00:00:48,630 ব্যবহারকারী থেকে. 19 00:00:48,630 --> 00:00:50,810 >> কিন্তু এখন আমরা scanf বলা প্রয়োজন অন্য একটি বিষয় - 20 00:00:50,810 --> 00:00:53,350 স্ট্রিং রাখতে যে যেখানে ব্যবহারকারীর উপলব্ধ করা হয়. 21 00:00:53,350 --> 00:00:57,840 ওয়েল, আমি বেশ সহজভাবে শুরু করা যাচ্ছে না কমা গুলি, আমি চাই যে উল্লেখ সঙ্গে 22 00:00:57,840 --> 00:00:59,320 scanf সেখানে স্ট্রিং লাগাতে. 23 00:00:59,320 --> 00:01:04,818 আমি পরের কিছু প্রিন্ট আউট চলেছি % s-এর জন্য printf, "ধন্যবাদ ভালো 24 00:01:04,818 --> 00:01:10,670 ব্যাকস্ল্যাশ এন কমা. "এবং হিসাবে সবসময়, আমি আছি স্ট্রিং, এস পাস করতে যাচ্ছে. 25 00:01:10,670 --> 00:01:14,920 এখন, এর সংরক্ষণ যাক সঙ্কলন, এবং এই রান আমরা প্রবৃত্ত করতে পারে না, যদি প্রোগ্রাম, এবং দেখুন 26 00:01:14,920 --> 00:01:16,590 সমস্যা আমি পূর্বাভাস. 27 00:01:16,590 --> 00:01:18,650 >> Scanf -1 করুন. 28 00:01:18,650 --> 00:01:20,960 ./scanf-1. 29 00:01:20,960 --> 00:01:21,830 স্ট্রিং করুন. 30 00:01:21,830 --> 00:01:25,540 এর মত কিছু প্রদান করা যাক "হ্যালো." "নাল জন্য ধন্যবাদ." হুম, যে না 31 00:01:25,540 --> 00:01:26,750 আমি আশা ছিল কি. 32 00:01:26,750 --> 00:01:28,240 তাই এখানে করছেন? 33 00:01:28,240 --> 00:01:32,040 >> আমরা ঘোষণা, কারণ ভাল, এটি সক্রিয় আউট গুলি একটি গৃহস্থালি তারকা হিসেবে কিন্তু আমরা না 34 00:01:32,040 --> 00:01:36,120 আসলে একটি ঠিকানা গুলি মধ্যে সংরক্ষিত মেমরি প্রকৃত খণ্ড, scanf না 35 00:01:36,120 --> 00:01:38,940 স্ট্রিং করা যে কোন জায়গা আছে যে টাইপ ইন ইউজার 36 00:01:38,940 --> 00:01:42,510 প্রকৃতপক্ষে, ইউজার হলে এখন টাইপ "হ্যালো" চেয়ে অনেক লম্বা পংক্তি 37 00:01:42,510 --> 00:01:46,780 উদাহরণস্বরূপ বিভিন্ন টেক্সট লাইনের বা লেখার বেশ কিছু অনুচ্ছেদ, এটা বেশ এর 38 00:01:46,780 --> 00:01:50,280 আমরা প্রবৃত্ত হতে পারে যে সম্ভব একটি সেগমেন্টেশন ফল্ট তথাকথিত. 39 00:01:50,280 --> 00:01:53,570 >> Scanf জানা যাচ্ছে না কারণ যে আমি আসলে একটি ঠিকানা করান নি 40 00:01:53,570 --> 00:01:54,610 গুলি ভেতরে. 41 00:01:54,610 --> 00:01:58,000 বরং, এটা কিছু মান দেখতে যাচ্ছে গুলি করে, কিছু প্যাটার্ন বিট যে may 42 00:01:58,000 --> 00:02:00,910 খুব ভাল একটা আবর্জনা মান হতে, সেখানে শুধু সুযোগ দ্বারা. 43 00:02:00,910 --> 00:02:04,600 এবং scanf এখনও লিখতে চেষ্টা যাচ্ছে যে ঠিকানায় ব্যবহারকারীর স্ট্রিং, 44 00:02:04,600 --> 00:02:08,789 এটি একটি গার্বেজ মান, এমনকি যদি যা প্রকৃতপক্ষে একটি ক্র্যাশ রাজি করানো যায়নি. 45 00:02:08,789 --> 00:02:10,130 >> সুতরাং কিভাবে আমরা এই ঠিক করতে যাচ্ছে? 46 00:02:10,130 --> 00:02:12,523