
সি প্রোগ্রামিং ভাষা beş দশক আগে প্রবর্তিত হয়েছিল। স Kolkata থেকে এটি প্রোগ্রামিং জগতে অত্যন্ত জনপ্রিয় হয়ে উঠেছে। কাঠামোগত সহজতা, ফাংশন, পোর্টেবিলিটি, দক্ষ মেমরি ব্যবস্থাপনা ইত্যাদি বৈশিষ্ট্যের কারণে এটি অন্যান্য ভাষা থেকে বিচ্ছিন্ন। বিভিন্ন বৈশিষ্ট্য থাকা সত্ত্বেও, সি-তে ফাংশনগুলি সবচেয়ে প্রমুখ সম্পদ যা অনেক ব্যবহারকারীকে শক্তিশালী কোড স্নিপেট লেখতে সাহায্য করে।
আরও, itoa একটি ব্যাপকভাবে ব্যবহৃত নন-স্ট্যান্ডার্ড ফাংশন যা ডেটা টাইপ কনভার্টার হিসেবে কাজ করে। এটি ইনপুট হিসেবে int ডেটা টাইপ নেয় এবং সেটিকে স্ট্রিং-এ রূপান্তর করে। কিন্তু আপনাদের 중에 অনেকেই এর ব্যবহার জানেন না। তাই এই গাইড সংক্ষেপে ব্যাখ্যা করে কিভাবে সি-তে itoa ফাংশন ব্যবহার করতে হয় tanpa কোনো ঝামেলা।
চলুন বেসিক্স দিয়ে শুরু করি। এখানে itoa ফাংশনের সহজ সিনট্যাক্স দেওয়া হলো:
int main() {
int num = 12345;
char str[20];
itoa(num, str, 10);
printf("Integer: %d\nString: %s\n", num, str);
return 0;
}
উপরোক্ত প্রোগ্রামে বিবরণ নিম্নরূপ:
- num হলো ইন্টিজার
- str হলো ক্যারেক্টার অ্যারে
- 10 হলো বেস (base)
এখন এগিয়ে যাই, একটি প্রোগ্রাম লিখি এবং itoa ফাংশন বাস্তবায়ন করি। উদাহরণস্বরূপ, আমাদের ইনপুট নেওয়া সংখ্যাকে স্ট্রিং-এ রূপান্তর করতে হবে।
#include <stdio.h>
#include <stdlib.h>
void itoa(int num, char *str, int base) {
int i = 0;
int isNegative = 0;
if (num == 0) {
str[i++] = '0';
str[i] = '\0';
return;
}
if (num < 0 && base != 10) {
isNegative = 1;
num = -num;
}
while (num != 0) {
int rem = num % base;
str[i++] = (rem > 9) ? (rem - 10) + 'a' : rem + '0';
num = num / base;
}
if (isNegative && base == 10)
str[i++] = '-';
str[i] = '\0';
int start = 0;
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
int num;
printf("Enter an integer: ");
if (scanf("%d", &num) != 1) {
fprintf(stderr, "Invalid input. Please enter an integer.\n");
return EXIT_FAILURE;
}
int max_size = snprintf(NULL, 0, "%d", num) + 1;
char *str = (char *)malloc(max_size);
if (str == NULL) {
fprintf(stderr, "Memory allocation failed\n");
return EXIT_FAILURE;
}
itoa(num, str, 10);
printf("Integer: %d\nString: %s\n", num, str);
free(str);
return 0;
}
পূর্বের প্রোগ্রামে, itoa(int num, char *str, int base) হলো itoa ফাংশন। আরও, নিচের সিনট্যাক্স সরাসরি ফলাফলে শূন্য বসায় যখন ইনপুট সংখ্যাও শূন্য হয়:
if (num == 0) {
str[i++] = '0';
str[i] = '\0';
return;
}
যখন ইনপুট সংখ্যা নেগেটিভ এবং বেস 10 নাও হয়, তখন নিচের প্রোগ্রাম লাইনগুলো নেগেটিভ ফ্ল্যাগ সেট করে:
if (num < 0 && base != 10) {
isNegative = 1;
num = -num;
}
নিচের লুপ সমস্ত ডিজিট প্রক্রিয়া করে এবং সেগুলোকে সংশ্লিষ্ট ক্যারেক্টারে রূপান্তর করে। অতএব, 10-এর বেশি বেসের জন্য, প্রোগ্রাম 10 থেকে 15 পর্যন্ত ডিজিটের জন্য 'a' থেকে 'f' অক্ষর ব্যবহার করে।
while (num != 0) {
int rem = num % base;
str[i++] = (rem > 9) ? (rem - 10) + 'a' : rem + '0';
num = num / base;
}
যখন সংখ্যা 본래 নেগেটিভ এবং বেস 10 হয়, প্রোগ্রাম ফলাফল স্ট্রিং-এ নেগেটিভ চিহ্ন যোগ করে।
if (isNegative && base == 10)
str[i++] = '-';
নিচের লাইনগুলো ফলাফল স্ট্রিং টার্মিনেট করে এবং তারপর সেটি রিভার্স করে কারণ রূপান্তর প্রক্রিয়ায় ডিজিটগুলো উল্টা ক্রমে পাওয়া যায়:
str[i] = '\0';
// Reverse the string
int start = 0;
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
অতএব, প্রোগ্রাম ইন্টিজার ইনপুট নেয়, স্ট্রিং রিপ্রেজেন্টেশনের জন্য মেমরি অ্যালোকেট করে, itoa কল করে ইন্টিজারকে স্ট্রিং-এ রূপান্তর করে, মূল ইন্টিজার প্রিন্ট করে, এবং τέλος অ্যালোকেট করা মেমরি ফ্রি করে। উদাহরণস্বরূপ, প্রোগ্রামে একটি সংখ্যা দিই:

তবে, আপনি যদি নন-ইন্টিজার সংখ্যা দেন, প্রোগ্রাম নিচের ফলাফল দেখাবে:
উপসংহার
এইভাবে আপনি সহজে সি-তে itoa ফাংশন বাস্তবায়ন ও ব্যবহার করতে পারেন। আমরা একটি বিস্তারিত উদাহরণ ব্যবহার করেছি যাতে একাধিক ফাংশন দিয়ে ইন্টিজারকে স্ট্রিং-এ রূপান্তর করা যায়। মনে রাখবেন, এটি শুধু একটি উদাহরণ, কিন্তু আপনি itoa ফাংশনকে বিভিন্ন ফাংশনের সাথে সংমিশ্রণ করে চমতকার প্রোগ্রাম লিখতে পারেন।
লেখক সম্পর্কে

প্রতীক জাঙ্গিদ
ব্যক্তিগত ও পেশাদারি কারণlerden লিনাক্সের প্রতি জুনুনী, সর্বদা লিনাক্সের জগতে নতুন কী আছে তা অনুসন্ধান করি এবং পাঠকদের সাথে শেয়ার করি।
