स्ट्रिंग क्या है?
कैरेक्टर्स की एक सरणी (या संग्रह) को स्ट्रिंग कहा जाता है। C में स्ट्रिंग हमेशा नल कैरेक्टर '\0' (ASCII 0) से समाप्त होती है।
घोषणा (Declaration)
char string_name[size];
उदाहरण: char str[50]; // 50 कैरेक्टर तक की स्ट्रिंग (49 + नल टर्मिनेटर)
प्रारंभिकरण (Initialization)
विधि 1: एकल कैरेक्टर स्थिरांक का उपयोग करके
char str[20] = {'H', 'e', 'l', 'l', 'o', '\0'};
मेमोरी लेआउट:
इंडेक्स: 0 1 2 3 4 5 6...
मान: H e l l o \0 ?
विधि 2: स्ट्रिंग स्थिरांक का उपयोग करके (सबसे आम)
char str[20] = "Hello";
कंपाइलर स्वचालित रूप से '\0' जोड़ देता है।
इंडेक्स: 0 1 2 3 4 5 6...
मान: H e l l o \0 ?
विधि 3: आकार निर्दिष्ट किए बिना (कंपाइलर गणना करता है)
char str[] = "Hello"; // आकार स्वचालित रूप से 6 हो जाता है
विधि 4: पॉइंटर का उपयोग करके (स्ट्रिंग लिटरल - केवल पढ़ने योग्य)
char *str = "Hello"; // रीड-ओनली मेमोरी में संग्रहीत
नल कैरेक्टर '\0' के बारे में
'\0'को नल कैरेक्टर कहा जाता है- यह स्ट्रिंग के अंत को चिह्नित करता है
- स्ट्रिंग लिटरल ("...") के लिए कंपाइलर स्वचालित रूप से रखता है
- एकल कैरेक्टर इनिशियलाइज़र के लिए उपयोगकर्ता को मैन्युअल रूप से रखना पड़ता है
strlen(),printf("%s"),strcpy()आदि इसी पर निर्भर करते हैं
एक्सेस करना (Accessing)
कंट्रोल स्ट्रिंग "%s" का उपयोग स्ट्रिंग एक्सेस करने के लिए किया जाता है, जब तक '\0' न मिल जाए।
उदाहरण प्रोग्राम
#include <stdio.h>
int main() {
char str[10] = "Hello";
printf("दिया गया स्ट्रिंग है: %s\n", str);
// अलग-अलग कैरेक्टर एक्सेस
printf("कैरेक्टर दर कैरेक्टर: ");
for (int i = 0; str[i] != '\0'; i++) {
printf("%c ", str[i]);
}
printf("\n");
// लंबाई
printf("लंबाई: %lu\n", strlen(str));
return 0;
}
आउटपुट
दिया गया स्ट्रिंग है: Hello
कैरेक्टर दर कैरेक्टर: H e l l o
लंबाई: 5
सामान्य स्ट्रिंग ऑपरेशन (string.h)
| फ़ंक्शन | उद्देश्य | उदाहरण |
|---|---|---|
| strlen(s) | लंबाई | strlen("Hello") = 5 |
| strcpy(dest, src) | कॉपी | strcpy(d, s) |
| strncpy(dest, src, n) | n कैरेक्टर कॉपी | strncpy(d, s, 3) |
| strcat(dest, src) | जोड़ना | strcat(d, s) |
| strcmp(s1, s2) | तुलना | strcmp("a", "b") < 0 |
| strchr(s, c) | कैरेक्टर खोजें | strchr("Hello", 'e') |
| strstr(s1, s2) | सबस्ट्रिंग खोजें | strstr("Hello", "ll") |
सामान्य गलतियां
str1 == str2से तुलना करना (पते की तुलना होती है, सामग्री की नहीं) →strcmpउपयोग करें- बफर आकार से बड़ा स्ट्रिंग कॉपी करना →
strncpyयाsnprintfउपयोग करें '\0'भूल जाना मैन्युअल इनिशियलाइज़ेशन में- स्ट्रिंग लिटरल को संशोधित करने का प्रयास (अनिर्धारित व्यवहार)