Notes in Hindi

String Initialization using Character Array in Hindi

/ BCA / Programming with C and CPP

String Initialization and Input Methods in C in Hindi

String Initialization using Character Array in Hindi

What is String in C Language?

C भाषा में string एक character array होता है, जो अक्षरों (characters) की एक श्रृंखला (sequence) को संग्रहित करता है। C में string को विशेष रूप से null character (`\0`) के साथ end किया जाता है, जिससे compiler यह समझता है कि string कहाँ समाप्त हो रही है।

Character Array से String Initialization कैसे करते हैं?

जब हम character array का उपयोग करके string को initialize करते हैं, तो हमें हर character को manually define करना होता है और अंत में एक null character `\0` देना होता है।

// Character array द्वारा string initialization char name[6] = {'R', 'a', 'm', 'e', 's', 'h'};

ऊपर दिए गए उदाहरण में, हमने `Ramesh` नाम को character by character initialize किया है लेकिन इसमें null character `\0` नहीं है। इसलिए यह सही तरीके से string नहीं माना जाएगा।

// सही तरीका जिसमें null character शामिल हो char name[7] = {'R', 'a', 'm', 'e', 's', 'h', '\0'};

अब यह एक valid string मानी जाएगी क्योंकि यह null character से समाप्त हो रही है।

Character Array का Size क्यों Important है?

  • यदि हम size कम देंगे और null character शामिल नहीं करेंगे, तो output unpredictable हो सकता है।
  • Size हमेशा characters की संख्या +1 (null character के लिए) होना चाहिए।

Character Array से String Initialize करने के लाभ

  • यह हमें प्रत्येक character को control करने का मौका देता है।
  • Memory के allocation को manually manage किया जा सकता है।

Direct String Initialization in C in Hindi

Direct Initialization क्या है?

C भाषा में हम सीधे एक character array को एक string literal से initialize कर सकते हैं। इसमें null character अपने आप अंत में जोड़ दिया जाता है।

char name[] = "Ramesh";

ऊपर वाले example में `"Ramesh"` string literal है जो अपने आप null character (`\0`) के साथ आता है। इसका size automatic 7 (6 characters + 1 null character) हो जाता है।

Direct Initialization के लाभ

  • Code छोटा और readable बनता है।
  • Null character की चिंता नहीं करनी पड़ती।
  • Memory का automatic allocation होता है।

Example Program:

#include <stdio.h> int main() { char name[] = "Sita"; printf("Name is: %s", name); return 0; }

Output: Name is: Sita


String Input using gets() and scanf() in Hindi

scanf() से string input कैसे लेते हैं?

C में `scanf()` का उपयोग करके हम string को input कर सकते हैं, लेकिन यह केवल पहले space तक का data लेता है।

#include <stdio.h> int main() { char name[20]; printf("Enter your name: "); scanf("%s", name); printf("Your name is: %s", name); return 0; }

यदि हम input में space देंगे, जैसे "Ram Kumar", तो सिर्फ "Ram" ही input होगा।

gets() function का उपयोग

`gets()` function पूरा string (including spaces) को input करने की अनुमति देता है।

#include <stdio.h> int main() { char name[30]; printf("Enter your full name: "); gets(name); printf("Full name is: %s", name); return 0; }

यह function spaces को भी input कर सकता है, लेकिन इसका उपयोग discouraged किया जाता है क्योंकि यह buffer overflow की समस्या पैदा कर सकता है।

gets() vs scanf()

Function Space को handle करता है? Security
scanf() नहीं सुरक्षित
gets() हाँ असुरक्षित (buffer overflow issue)

Recommended Alternative

C11 से `gets()` को हटा दिया गया है। इसकी जगह `fgets()` का उपयोग करना चाहिए:

fgets(name, sizeof(name), stdin);

String Initialization Errors and Warnings in Hindi

Common Errors:

  • Null character भूल जाना – यदि आप character array में `\0` देना भूल जाते हैं, तो string undefined behavior देगा।
  • Size से ज़्यादा characters – अगर array का size कम है और string बड़ा है, तो memory corruption हो सकता है।
// गलत तरीका char name[5] = "Ramesh"; // Error: 6 characters + \0 > size 5

Compiler Warning Example:

warning: initializer-string for array of chars is too long

String Assignment Error:

C में strings को directly assign नहीं किया जा सकता।

char name[10]; name = "Sita"; // ❌ गलत तरीका

सही तरीका:

char name[] = "Sita"; // ✅ सही तरीका

How to Fix Errors:

  • Always add null character manually (if not using string literal).
  • Use correct array size (length + 1).
  • Do not assign string after declaration without using strcpy().

Using strcpy() Function:

#include <string.h> char name[10]; strcpy(name, "Sita");

Final Tips:

  • String literals use करें जब direct initialization करना हो।
  • scanf() simple strings के लिए, और fgets() full lines के लिए उपयोग करें।
  • String size हमेशा ध्यान रखें, overflow से बचें।
  • `gets()` से बचें, ये पुराना और असुरक्षित तरीका है।

FAQs

C में character array initialization में हर character को manually define किया जाता है और null character `\0` को अंत में जोड़ना पड़ता है। जबकि direct string initialization में हम string को double quotes (" ") में लिखते हैं और compiler अपने आप null character जोड़ देता है।
Null character (`\0`) यह बताने का काम करता है कि string कहाँ समाप्त हो रही है। इसके बिना string functions जैसे printf, strlen आदि को यह नहीं पता चलता कि string कहाँ खत्म हो रही है जिससे गलत output या crash हो सकता है।
नहीं, C में आप किसी declared character array को सीधे string assign नहीं कर सकते। इसके लिए आपको `strcpy()` function का उपयोग करना होगा। उदाहरण: strcpy(name, "Ravi");
gets() function buffer overflow का खतरा पैदा करता है क्योंकि यह input की length check नहीं करता। अगर user input बहुत लंबा है तो यह memory को corrupt कर सकता है। इसलिए C11 standard में इसे हटा दिया गया है।
C में spaces सहित सुरक्षित string input लेने के लिए `fgets()` function का उपयोग करना चाहिए। यह input की length को control करता है और memory overflow से बचाता है।

Please Give Us Feedback