কাস্টম ফরম্যাটিং এবং printf(), scanf() এর অ্যাডভান্সড ব্যবহার
সি প্রোগ্রামিং ভাষায় printf() এবং scanf() ফাংশন দুটি স্ট্যান্ডার্ড ইনপুট এবং আউটপুট ব্যবস্থাপনার জন্য ব্যবহৃত হয়। এই ফাংশনগুলোর সাহায্যে আমরা সহজেই ইনপুট নিতে এবং আউটপুট প্রদর্শন করতে পারি। তবে, যখন আপনাকে আরও কাস্টম ফরম্যাটিং অথবা অ্যাডভান্সড ফিচার প্রয়োজন হয়, তখন printf() এবং scanf() এ কিছু বিশেষ ফরম্যাট স্পেসিফায়ার এবং কাস্টম অপশন ব্যবহার করা যেতে পারে।
এখানে printf() এবং scanf() ফাংশনের কাস্টম ফরম্যাটিং এবং অ্যাডভান্সড ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।
১. printf() এর কাস্টম ফরম্যাটিং
printf() ফাংশনটি বিভিন্ন ধরনের ডেটা আউটপুট করতে ব্যবহৃত হয়, এবং এটি ফরম্যাট স্পেসিফায়ার এর মাধ্যমে আউটপুটকে কাস্টমাইজ করতে পারে। ফরম্যাট স্পেসিফায়ারের সাহায্যে আমরা ডেটা প্রদর্শনের ধরন, স্থানে, স্থানান্তর এবং সঠিকতা নির্ধারণ করতে পারি।
১.১ ফরম্যাট স্পেসিফায়ার
| স্পেসিফায়ার | বর্ণনা |
|---|---|
%d | ইন্টিজার আউটপুট (decimal) |
%f | ফ্লোট আউটপুট |
%s | স্ট্রিং আউটপুট |
%c | একক ক্যারেক্টার আউটপুট |
%x | হেক্সাডেসিমাল আউটপুট (lowercase) |
%X | হেক্সাডেসিমাল আউটপুট (uppercase) |
%o | অক্টাল আউটপুট |
%e | এক্সপোনেনশিয়াল ফরম্যাটে ফ্লোট আউটপুট |
%g | স্বয়ংক্রিয়ভাবে %f বা %e বেছে নেয় |
১.২ বিস্তৃত ফরম্যাটিং অপশন
নির্দিষ্ট দৈর্ঘ্য (Width) সেট করা:
- আপনি
printf()ফাংশনে আউটপুটের জন্য নির্দিষ্ট ফিল্ড উইডথ (দৈর্ঘ্য) নির্ধারণ করতে পারেন। এটি আউটপুটটিকে নির্দিষ্ট জায়গায় সেন্টার করতে বা মাপতে সহায়ক।
উদাহরণ:
printf("|%10d|\n", 123); // আউটপুট: "| 123|", যেখানে 10টি স্পেস বরাদ্দ করা হয়েছে।- আপনি
ফ্লোট পয়েন্ট সঠিকতা (Precision):
- আপনি ফ্লোট বা ডাবল মানের দশমিক স্থান সংখ্যা নির্ধারণ করতে পারেন।
উদাহরণ:
printf("%.2f\n", 3.14159); // আউটপুট: "3.14", দশমিকের পরে দুইটি সংখ্যাআউটপুটে পূর্ণাঙ্গ সংখ্যা যোগ করা (Pad with Zero):
- আপনি সংখ্যার সামনে শূন্য (zero) যোগ করতে পারেন।
উদাহরণ:
printf("|%05d|\n", 42); // আউটপুট: "|00042|", সংখ্যা শূন্য দিয়ে পূর্ণ হবেটেক্সট সেন্টারিং বা লেফট/রাইট এলাইনমেন্ট:
- আপনি লেফট অথবা রাইট সেন্টারিং ফরম্যাট করতে পারেন।
উদাহরণ:
printf("|%-10s|\n", "hello"); // আউটপুট: "|hello |", বাম দিকে অ্যাডজাস্ট
১.৩ কাস্টম ফরম্যাট স্পেসিফায়ার
printf() ফাংশনটি কাস্টম ফরম্যাটের জন্য বিশেষ স্পেসিফায়ার ব্যবহার করতে দেয়:
%*s: স্ট্রিং সাইজ কাস্টমাইজ করা।%.*f: ফ্লোট সঠিকতা কাস্টমাইজ করা।
উদাহরণ:
#include <stdio.h>
int main() {
printf("|%*s|\n", 10, "test"); // আউটপুট: "| test|", যেখানে স্ট্রিং সাইজ কাস্টমাইজ করা হয়েছে
printf("|%.*f|\n", 2, 3.14159); // আউটপুট: "|3.14|", যেখানে ফ্লোট সঠিকতা নির্ধারণ করা হয়েছে
return 0;
}২. scanf() এর কাস্টম ফরম্যাটিং
scanf() ফাংশনটি ইনপুট গ্রহণ করার সময় নির্দিষ্ট ফরম্যাটে ইনপুট প্রয়োজন হলে আমরা ফরম্যাট স্পেসিফায়ার ব্যবহার করতে পারি। এর মাধ্যমে ইনপুটের সঠিকতা এবং টাইপ নির্ধারণ করা যায়।
২.১ ফরম্যাট স্পেসিফায়ার
| স্পেসিফায়ার | বর্ণনা |
|---|---|
%d | ইন্টিজার ইনপুট (decimal) |
%f | ফ্লোট ইনপুট |
%s | স্ট্রিং ইনপুট |
%c | একক ক্যারেক্টার ইনপুট |
%x | হেক্সাডেসিমাল ইনপুট |
%o | অক্টাল ইনপুট |
২.২ ফরম্যাটিং এবং ইনপুট চেকিং
ইনপুটের সীমাবদ্ধতা (Field width):
- আপনি
scanf()এর মাধ্যমে ইনপুটের জন্য ফিল্ড উইডথ নির্ধারণ করতে পারেন।
উদাহরণ:
char str[10]; scanf("%9s", str); // একবারে 9টি ক্যারেক্টার পড়বে- আপনি
ডেটা টাইপের পরীক্ষা:
scanf()ফাংশন ইনপুট টাইপের উপর ভিত্তি করে সঠিক ডেটা টাইপ চেক করবে এবং এটি সফল হলে একটি return value রিটার্ন করবে (যেমন 1, 2, বা 0)।
উদাহরণ:
int num; if (scanf("%d", &num) != 1) { printf("Invalid input!\n"); }একাধিক ইনপুট গ্রহণ করা:
- আপনি
scanf()ব্যবহার করে একাধিক ইনপুটও একসাথে গ্রহণ করতে পারেন।
উদাহরণ:
int a; float b; char c; scanf("%d %f %c", &a, &b, &c);- আপনি
২.৩ কাস্টম ইনপুট ফরম্যাট
যদি আপনি চান যে scanf() শুধুমাত্র কিছু নির্দিষ্ট চরিত্র গ্রহণ করুক, তাহলে আপনি কাস্টম ফরম্যাট স্পেসিফায়ার ব্যবহার করতে পারেন।
উদাহরণ:
char ch;
scanf("%1s", &ch); // একক অক্ষর ইনপুটসারসংক্ষেপ
| ফাংশন | বর্ণনা | সিঙ্কট্যাক্স |
|---|---|---|
printf() | আউটপুট ফরম্যাটিং এবং ডেটা প্রদর্শন। | printf(format, ...) |
scanf() | ইনপুট গ্রহণ এবং ফরম্যাটিং। | scanf(format, ...) |
printf()এবংscanf()ফাংশনগুলির মাধ্যমে আপনি কাস্টম ফরম্যাটিং করতে পারেন, যেমন সঠিকতা, দৈর্ঘ্য, ফিল্ড উইডথ ইত্যাদি।printf()বিভিন্ন ধরনের ফরম্যাট স্পেসিফায়ার যেমন%d,%f,%sইত্যাদি ব্যবহার করে আউটপুট কাস্টমাইজ করতে পারে।scanf()ইনপুট গ্রহণ করার সময় নির্দিষ্ট ফরম্যাট স্পেসিফায়ার এবং টাইপ চেকিং সরবরাহ করে, যা ইনপুটের সঠিকতা নিশ্চিত করতে সাহায্য করে।
এই ফাংশনগুলির মাধ্যমে, আপনি সি প্রোগ্রামে আউটপুট এবং ইনপুটকে কাস্টমাইজ করতে পারেন এবং কোড আরও কার্যকরী ও ব্যবহারযোগ্য করে তুলতে পারেন।
Read more