এই সেকশনে দেখব সি-তে ভেরিয়েবল নম্বর অফ আর্গুমেন্টস (Variable Number of Arguments) এর ক্ষেত্রে আর্গুমেন্টের সংখ্যা কীভাবে গণনা করতে হয়।
সি ellipsis (...) সাপোর্ট করে। এটি একটি ফাংশনে ভেরিয়েবল সংখ্যক আর্গুমেন্ট নেওয়ার জন্য ব্যবহৃত হয়। ইউজার তিনটি উপায়ে আর্গুমেন্ট কাউন্ট করতে পারে:
- প্রথম আর্গুমেন্ট হিসেবে প্যারামিটারের কাউন্ট পাস করে।
- শেষ আর্গুমেন্ট হিসেবে NULL পাস করে।
- printf() বা scanf()-এর মতো লজিক ব্যবহার করে যেখানে প্রথম আর্গুমেন্টে অন্য আর্গুমেন্টের প্লেসহোল্ডার থাকে।
নিচের প্রোগ্রামে ভেরিয়েবল আর্গুমেন্টের মোট সংখ্যা প্রিন্ট করা হয়েছে।
উদাহরণ কোড
#include <stdio.h>
#include <stdarg.h>
int get_avg(int count, ...) {
va_list ap;
int i;
int sum = 0;
va_start(ap, count); // আর্গুমেন্ট অ্যাক্সেস করার আগে va_start
for (i = 0; i < count; i++) {
sum += va_arg(ap, int);
}
va_end(ap); // আর্গুমেন্ট অ্যাক্সেস শেষে va_end
return sum;
}
int main() {
printf("Total variable count is: %f", get_avg(5, 8, 5, 3, 4, 6));
}
আউটপুট
Total variable count is: 5
নোট: উদাহরণে ফাংশন নাম
get_avgকিন্তু এটি যোগফল রিটার্ন করছে, কাউন্ট নয়। প্রথম আর্গুমেন্টcount=5হলে ৫টি আর্গুমেন্ট প্রসেস হয়। প্রিন্টফ-এ %f ফরম্যাট স্পেসিফায়ার ব্যবহার করা হয়েছে কিন্তু ফাংশন int রিটার্ন করে, এটিও একটি বাগ।