- 1 1. परिचय: C भाषा मा स्ट्रिङ र संख्यात्मक रूपान्तरणको महत्व
- 2 2. C भाषा मा स्ट्रिङलाई संख्यामा रूपान्तरण गर्ने तरिका
- 3 3. C भाषा मा संख्यालाई स्ट्रिङमा रूपान्तरण गर्ने तरिका
- 4 4. वास्तविक प्रयोग उदाहरण: स्ट्रिङ र संख्याको द्विमार्गी रूपान्तरण
- 5 5. त्रुटि ह्यान्डलिंग र ध्यान दिनुपर्ने बुँदाहरू
- 6 6. सारांश
1. परिचय: C भाषा मा स्ट्रिङ र संख्यात्मक रूपान्तरणको महत्व
C भाषा को प्रोग्रामिङमा, स्ट्रिङ र संख्यात्मक रूपान्तरण अत्यन्त महत्वपूर्ण कार्य हो। विशेष गरी, प्रयोगकर्ताबाटको इनपुट वा बाह्य फाइलको डेटा प्रक्रिया गर्दा, स्ट्रिङलाई संख्यामा रूपान्तरण गर्न आवश्यक पर्नु सामान्य छ। उल्टो रूपमा, गणनाको परिणाम वा लगको लागि संख्यालाई स्ट्रिङमा रूपान्तरण गर्नु पनि बारम्बार हुन्छ।
यस प्रकारको रूपान्तरण गर्नका लागि केही विधिहरू छन्, तर कुन विधि चयन गर्ने भन्ने कुरा प्रयोगको स्थितिमा निर्भर गरी सावधानीपूर्वक निर्णय गर्नुपर्छ। यस लेखमा, C भाषा मा स्ट्रिङ र संख्यात्मक रूपान्तरण विधिहरूलाई विस्तृत रूपमा व्याख्या गर्नेछौं, त्रुटि ह्यान्डलिङ र सुरक्षित प्रयोगबारे पनि चर्चा गर्नेछौं।
2. C भाषा मा स्ट्रिङलाई संख्यामा रूपान्तरण गर्ने तरिका
atoi()
फङ्क्शन द्वारा आधारभूत स्ट्रिङ→इन्टिजर रूपान्तरण
C भाषा मा स्ट्रिङलाई इन्टिजरमा रूपान्तरण गर्ने सबैभन्दा आधारभूत तरिका भनेको atoi()
फङ्क्शन प्रयोग गर्नु हो। यो फङ्क्शन सजिलै प्रयोग गर्न सकिन्छ तर ध्यान दिनुपर्ने बुँदाहरू पनि छन्। तल आधारभूत प्रयोग देखाइएको छ।
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123";
int num = atoi(str);
printf("परिवर्तित संख्या: %dn", num);
return 0;
}
atoi()
सरल छ तर त्रुटि जाँच अपूर्ण छ। उदाहरणका लागि, अवैध इनपुट भए पनि त्रुटि रिपोर्ट गर्दैन। तलको उदाहरणमा, अवैध स्ट्रिङमा atoi()
को व्यवहार देखाइन्छ।
char str[] = "123abc";
int num = atoi(str); // "123" मात्र रूपान्तरण हुन्छ, बाँकीलाई उपेक्षा गरिन्छ
atoi()
यसरी अवैध स्ट्रिङ समावेश भए पनि, रूपान्तरणको सफल भाग मात्र फर्काउँछ, त्यसैले सुरक्षा आवश्यक प्रणालीहरूमा यसको प्रयोग टाढा राख्नु उपयुक्त छ।
strtol()
फङ्क्शन द्वारा सुरक्षित रूपान्तरण
त्रुटि जाँच आवश्यक परेमा, strtol()
फङ्क्शन प्रयोग गर्न सिफारिस गरिन्छ। strtol()
अवैध इनपुटमा त्रुटि ह्यान्डलिङ्ग गर्दछ, रूपान्तरण असफल भएमा वा आधार (radix) निर्दिष्ट गरेर रूपान्तरण गर्न सम्भव छ। तलको कोडले strtol()
प्रयोग गरी स्ट्रिङलाई सुरक्षित रूपमा इन्टिजरमा रूपान्तरण गर्ने उदाहरण देखाउँछ।
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
char str[] = "123abc";
char *endptr;
errno = 0; // त्रुटि अवस्था रिसेट गर्नुहोस्
long num = strtol(str, &endptr, 10);
if (errno != 0 || *endptr != '\0') {
printf("रूपान्तरण असफल भयो।n");
} else {
printf("रूपान्तरण पछि संख्या: %ldn", num);
}
return 0;
}
यो कोडमा, अवैध भागको स्ट्रिङ पत्ता लगाउन endptr
प्रयोग गरिएको छ। साथै, errno
जाँच गरेर ओभरफ्लो वा अन्डरफ्लो जस्ता त्रुटिहरू पनि पत्ता लगाउन सकिन्छ।

3. C भाषा मा संख्यालाई स्ट्रिङमा रूपान्तरण गर्ने तरिका
sprintf()
function र यसको जोखिम
संख्यालाई स्ट्रिङमा रूपान्तरण गर्न, sprintf()
function प्रयोग गर्नुहोस्। sprintf()
ले निर्दिष्ट फर्म्याट अनुसार संख्यालाई स्ट्रिङमा रूपान्तरण गरी बफरमा लेख्छ। तर, बफर ओभरफ्लोको जोखिम भएकोले सावधान रहनु आवश्यक छ। तल, आधारभूत प्रयोग उदाहरण देखाइन्छ।
#include <stdio.h>
int main() {
int num = 123;
char str[10];
sprintf(str, "%d", num);
printf("परिवर्तित स्ट्रिङ: %sn", str);
return 0;
}
यो कोडमा, पूर्णांकलाई स्ट्रिङमा रूपान्तरण गरिँदैछ, तर रूपान्तरण पछि स्ट्रिङ बफर साइज भन्दा बढी भएमा ओभरफ्लोको जोखिम हुन्छ।
snprintf()
द्वारा सुरक्षित रूपान्तरण
बफर ओभरफ्लो रोक्नका लागि, snprintf()
प्रयोग गर्न सिफारिस गरिन्छ। snprintf()
ले बफर साइज निर्दिष्ट गरी रूपान्तरण गर्छ, त्यसैले निर्दिष्ट साइज भन्दा बढी आउटपुट काटी दिइन्छ। हेरौं, तलको उदाहरण।
#include <stdio.h>
int main() {
int num = 12345;
char str[5];
snprintf(str, sizeof(str), "%d", num);
printf("परिवर्तित स्ट्रिङ: %sn", str); // बफर सानो भएकाले, परिणाम "1234" हो
return 0;
}
यो कोडमा, आउटपुट बफर साइज भन्दा बढी भएकोले, अन्तिम अक्षर काटी दिइन्छ। snprintf()
बफर साइज निर्दिष्ट गरेर, ओभरफ्लो रोक्ने सुरक्षित विधि हो।
4. वास्तविक प्रयोग उदाहरण: स्ट्रिङ र संख्याको द्विमार्गी रूपान्तरण
C भाषा मा, स्ट्रिङ र संख्यालाई द्विमार्गी रूपमा रूपान्तरण गर्ने कार्य प्रायः गरिन्छ। तलको कोडमा, sscanf()
र snprintf()
प्रयोग गरेर, स्ट्रिङबाट संख्यामा, संख्याबाट स्ट्रिङमा द्विमार्गी रूपान्तरणलाई कार्यान्वयन गरिएको छ।
#include <stdio.h>
int main() {
char str[] = "12345";
int num;
sscanf(str, "%d", &num);
printf("स्ट्रिङ्गबाट सङ्ख्यामा रूपान्तरण: %dn", num);
char new_str[10];
snprintf(new_str, sizeof(new_str), "%d", num);
printf("सङ्ख्याबाट स्ट्रिङ्गमा रूपान्तरण: %sn", new_str);
return 0;
}
यस उदाहरणमा, पहिलो पटक sscanf()
प्रयोग गरेर स्ट्रिङलाई संख्यामा रूपान्तरण गरिन्छ, त्यसपछि snprintf()
प्रयोग गरेर संख्यालाई फेरि स्ट्रिङमा रूपान्तरण गरिन्छ। द्विमार्गी रूपान्तरण इनपुट डेटा प्रक्रिया गरी परिणाम देखाउने अवस्थामा अत्यन्त उपयोगी हुन्छ।
5. त्रुटि ह्यान्डलिंग र ध्यान दिनुपर्ने बुँदाहरू
ओभरफ्लो र अन्डरफ्लोको ह्यान्डलिंग
संख्या लाई स्ट्रिङमा रूपान्तरण गर्दा, ओभरफ्लो वा अन्डरफ्लो हुन सक्छ। विशेष गरी, रूपान्तरण पछि संख्या डेटा प्रकारको दायरा भन्दा बाहिर भएमा, त्रुटि उत्पन्न हुन सक्छ।strtol()
वा sscanf()
प्रयोग गर्दा, तल देखाइअनुसार त्रुटि उचित रूपमा ह्यान्डल गर्नु महत्त्वपूर्ण छ।
if (errno == ERANGE) {
printf("ओभरफ्लो वा अन्डरफ्लो भएको छ。n");
}
errno
जाँच गरेर, त्रुटि भएको छ कि छैन भनेर पुष्टि गर्न सकिन्छ। ओभरफ्लो र अन्डरफ्लोको त्रुटि ह्यान्डलिंगलाई उचित रूपमा गर्नेले, प्रोग्रामले अनपेक्षित व्यवहार देखाउने सम्भावना रोक्न सक्छ।
अवैध इनपुटको सामना गर्ने तरिका
यदि स्ट्रिङ अवैध ढाँचामा छ भने, संख्यामा रूपान्तरण असफल हुन्छ। उदाहरणका लागि, \"123abc\"
जस्तो स्ट्रिङ रूपान्तरण गर्ने प्रयास गर्दा, केवल अंक भाग रूपान्तरण हुन्छ र बाँकी भागलाई बेवास्ता गरिन्छ। यो रोक्नका लागि, strtol()
ले रूपान्तरण सफल भएको स्थान देखाउने पोइन्टर प्रयोग गरेर त्रुटि जाँच गर्दछ।
char *endptr;
long num = strtol(str, &endptr, 10);
if (*endptr != '\0') {
printf("अवैध इनपुट समावेश गरिएको छ।n");
}
6. सारांश
त्रुटि जाँचलाई बेवास्ता नगरी, सुरक्षित तरिकाले संख्यात्मक र स्ट्रिङ्ग रूपान्तरण गर्ने कुरा, कार्यक्रमको स्थिरता सुनिश्चित गर्न महत्त्वपूर्ण छ।atoi()
सजिलै प्रयोग गर्न सकिन्छ, तर त्रुटि उत्पन्न हुँदा त्यसको ह्यान्डल गर्न सकिँदैन, त्यसैले सामान्यतया strtol()
वा sscanf()
तथा snprintf()
जस्ता उच्च सुरक्षा भएका फलनहरू प्रयोग गर्ने सिफारिस गरिन्छ।
C भाषामा स्ट्रिङ्ग र संख्यात्मक रूपान्तरण प्रोग्रामरका लागि आधारभूत कौशल हो। यो कौशल हासिल गर्दा, अझ बलियो कार्यक्रम निर्माण गर्न सकिन्छ। साथै, त्रुटि ह्यान्डलिङ र मेमोरी व्यवस्थापनलाई राम्ररी गर्नेले, सुरक्षा पक्षमा पनि विश्वसनीय रूपमा सञ्चालन गर्न सकिने कार्यक्रम प्रदान गर्न सक्छ।
अझै सिक्नको लागि
यदि यो विषयबारे अझ गहिरो रूपमा सिक्न चाहनुहुन्छ भने, आधिकारिक दस्तावेजहरू वा ओपन सोर्स परियोजनाका कोडहरू हेर्नु राम्रो हुन्छ। साथै, C भाषाको त्रुटि ह्यान्डलिङ र मेमोरी व्यवस्थापन सम्बन्धी पुस्तकहरू पनि धेरै प्रकाशित भएका छन्, तिनीहरूलाई पनि उपयोग गर्ने सिफारिस गरिन्छ।