📘 Lesson  ·  Lesson 67

String Without string.h

String functions हाथ से क्यों लिखें?

C आपको <string.h> में तैयार string tools देता है — strlen, strcpy, strrev और भी। पर अपने खुद के versions लिखना strings को सच में समझने का सबसे अच्छा तरीका है, और यह बहुत आम interview अभ्यास है।

नीचे सब कुछ सिर्फ़ loops और arrays इस्तेमाल करता है — कोई string.h नहीं। एक बार यह समझ लें, तो library functions फिर कभी जादू नहीं लगेंगे।

राज़: null terminator

हर C string गुप्त रूप से एक विशेष character '\0' (null terminator) से खत्म होती है। शब्द "Hi" असल में तीन characters में रखा जाता है: 'H', 'i', '\0'। वही आख़िरी '\0' हर function को बताता है कि string कहाँ खत्म होती है।

💡 यही मुख्य विचार है

लगभग हर हाथ से लिखा string function बस यही है — "characters में तब तक चलो जब तक '\0' न मिले।"

strlen के बिना length

C Language
#include <stdio.h>
int main() {
    char str[] = "CodingEasily";
    int len = 0;
    while (str[len] != '\0')   // terminator par ruko
        len++;
    printf("Length = %d\n", len);
    return 0;
}
Output:
Length = 12

Loop characters गिनता है जब तक '\0' न मिले — वही गिनती length है।

strcpy के बिना copy

C Language
#include <stdio.h>
int main() {
    char src[] = "Hello";
    char dest[20];
    int i = 0;
    while (src[i] != '\0') { dest[i] = src[i]; i++; }
    dest[i] = '\0';            // terminator bhi copy karein!
    printf("Copied: %s\n", dest);
    return 0;
}
Output:
Copied: Hello
⚠️ '\0' मत भूलें

Loop के बाद आपको खुद dest[i] = '\0'; जोड़ना होगा, वरना dest valid string नहीं है और उसे print करने पर garbage छपता है।

String reverse करना

Length निकालें, फिर सिरों को अंदर की ओर swap करें जब तक वे मिल न जाएँ।

C Language
#include <stdio.h>
int main() {
    char str[] = "coding";
    int len = 0;
    while (str[len] != '\0') len++;

    for (int i = 0, j = len - 1; i < j; i++, j--) {
        char t = str[i]; str[i] = str[j]; str[j] = t;  // swap
    }
    printf("Reversed: %s\n", str);
    return 0;
}
Output:
Reversed: gnidoc

दो indices i और j एक-दूसरे की ओर बढ़ते हैं, चलते-चलते swap करते हुए। जब वे मिलते हैं, string पूरी तरह पलट जाती है।

दो strings की तुलना

C Language
int i = 0;
while (a[i] != '\0' && b[i] != '\0') {
    if (a[i] != b[i]) break;   // pehla antar
    i++;
}
if (a[i] == b[i]) printf("Equal\n");
else              printf("Not equal\n");

दोनों strings साथ चलाएँ; जिस पल दो characters अलग हों, वे बराबर नहीं। अगर आप दोनों के अंत पर एक साथ पहुँचें, तो वे मेल खाती हैं।

आम गलतियाँ

  • Copy के बाद '\0' जोड़ना भूलना, जिससे invalid string रह जाती है।
  • Destination array को copy और '\0' रखने के लिए बहुत छोटा बनाना।
  • <= length के साथ loop करके एक character आगे तक पढ़ना।
  • Reverse में i <= j इस्तेमाल करके बीच के character को बेवजह खुद से swap करना।
🏋️ अभ्यास

अपना concat लिखें जो दो strings जोड़े: पहली copy करें, फिर उसके ठीक बाद दूसरी copy करते रहें, और '\0' से खत्म करें। "Coding" और "Easily" से test करें।

सारांश

  • हर C string null terminator '\0' से खत्म होती है।
  • Length: '\0' तक characters गिनें।
  • Copy: हर character रखें, फिर खुद '\0' जोड़ें।
  • Reverse: दोनों सिरों से अंदर की ओर characters swap करें।
  • Compare: दोनों strings चलाएँ जब तक अंतर न हो या दोनों खत्म हों।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C में strlen के बिना string की length कैसे निकालें?
आप एक counter को zero से शुरू करते हैं और string में एक-एक character चलते हैं जब तक null terminator '\0' न मिले, हर कदम counter बढ़ाते हुए। Loop रुकने पर counter length के बराबर होता है। strlen भीतर यही करता है।
C string में null terminator क्या है?
हर C string एक छिपे विशेष character '\0' से खत्म होती है, जिसे null terminator कहते हैं। यह दर्शाता है कि string कहाँ रुकती है। सभी string functions — चाहे built-in हों या हाथ से लिखे — text का अंत जानने के लिए इसी पर निर्भर करते हैं।
C में strrev के बिना string कैसे reverse करें?
पहले length निकालें, फिर दोनों सिरों से characters swap करते हुए अंदर की ओर बढ़ें: पहला आख़िरी के साथ, दूसरा दूसरे-आख़िरी के साथ, और ऐसे ही जब तक दोनों indices बीच में न मिलें। यह बिना किसी library function के string को जगह पर reverse करता है।
strcpy के बिना string कैसे copy करें?
आप source string में एक-एक character चलते हैं और हर एक को destination की उसी स्थिति में रखते हैं, null terminator पर रुकते हुए — और फिर null terminator भी copy करना ज़रूरी है, ताकि destination एक सही string बने।
String functions खुद लिखना क्यों सीखें?
इन्हें खुद लिखना सिखाता है कि strings, loops, arrays और null terminator असल में कैसे काम करते हैं, जो आम interview विषय है और मज़बूत समझ बनाता है। असली projects में आप आमतौर पर परखे हुए string.h functions ही इस्तेमाल करेंगे।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.