C ভাষায় scanf() এবং gets() উভয় ফাংশনই এক্সটার্নাল সোর্স থেকে ইনপুট নিয়ে সিস্টেমে পাস করার জন্য ডিফাইন করা আছে। এখন এই দুটি ফাংশনের মধ্যে কিছু বৈশিষ্ট্যমূলক পার্থক্য রয়েছে।
C-তে scanf() এবং gets() এর মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো নিচে দেওয়া হলো −
| ক্র. নং | মূল বিষয় | scanf() ফাংশন | gets() ফাংশন |
|---|---|---|---|
| 1 | সংজ্ঞা | scanf() ফাংশন কীবোর্ড থেকে ইনপুট পড়ে এবং দিয়ে गये ফরম্যাট স্পেসিফায়ার অনুযায়ী সেগুলো স্টোর করে। এটি হোয়াইটস্পেস, নিউলাইন বা EOF পাওয়া পর্যন্ত ইনপুট পড়ে। | অন্যদিকে gets() ফাংশন কীবোর্ড থেকে নিউলাইন বা EOF পাওয়া পর্যন্ত ইনপুট গ্রহণ করে। হোয়াইটস্পেসটি ইনপুটের অংশ হিসেবে বিবেচিত হয়। |
| 2 | হোয়াইটস্পেস | scanf() ফাংশনে হোয়াইটস্পেস ইনপুট ক্যারেক্টার হিসেবে বিবেচিত হয় না এবং যদি মাঝপথে কোনো হোয়াইটস্পেস পাওয়া যায় তবে ইনপুট পড়া বন্ধ করে দেয়। | অন্যদিকে gets() ফাংশনে হোয়াইটস্পেস ইনপুট ক্যারেক্টার হিসেবে বিবেচিত হয় এবং এটি হোয়াইটস্পেস পাওয়া সত্ত্বেও ইনপুট সোর্স থেকে পড়া চালিয়ে থাকে। |
| 3 | সিনট্যাক্স | scanf() ফাংশন ফরম্যাট স্ট্রিং এবং ভেরিয়েবলগুলোর অ্যাড্রেসের লিস্ট নেয়। যেমন: scanf("%d", &number); | অন্যদিকে gets() ফাংশন গ্রহণ করা ভ্যালু স্টোর করার জন্য ভেরিয়েবলের নাম নেয়। যেমন: gets(name); |
| 4 | ডেটা টাইপ | scanf() ফাংশন বিভিন্ন ডেটা টাইপের একাধিক মান পড়তে পারে। | অন্যদিকে gets() ফাংশন শুধুমাত্র ক্যারেক্টার স্ট্রিং ডেটা গ্রহণ করতে পারে। |