Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में स्ट्रक्चर की सरणी (Array of Structures)


स्ट्रक्चर की सरणी क्या है?

एक ही प्रकार के कई स्ट्रक्चर चरों को सरणी के रूप में संगठित करना। यह सबसे आम उपयोग है स्ट्रक्चर का।

घोषणा


// 1. पहले स्ट्रक्चर परिभाषित करें
struct Student {
    int id;
    char name[30];
    float percentage;
};

// 2. फिर सरणी घोषित करें
struct Student record[3];  // 3 छात्रों की सरणी

एक्सेस करना

  • record[0].id - पहला छात्र की आईडी
  • record[1].name - दूसरा छात्र का नाम
  • record[i].percentage - i-वें छात्र का प्रतिशत

पूर्ण C प्रोग्राम

#include <stdio.h>
#include <string.h>

struct Student {
    int id;
    char name[30];
    float percentage;
};

int main() {
    struct Student record[3];
    int i;
    
    // डेटा दर्ज (हार्डकोडेड उदाहरण)
    record[0].id = 1;
    strcpy(record[0].name, "Bhanu");
    record[0].percentage = 86.5;
    
    record[1].id = 2;
    strcpy(record[1].name, "Priya");
    record[1].percentage = 90.5;
    
    record[2].id = 3;
    strcpy(record[2].name, "Hari");
    record[2].percentage = 81.5;
    
    // प्रिंट
    for (i = 0; i < 3; i++) {
        printf("छात्र %d का रिकॉर्ड:\n", i+1);
        printf("  ID: %d\n", record[i].id);
        printf("  नाम: %s\n", record[i].name);
        printf("  प्रतिशत: %.2f\n\n", record[i].percentage);
    }
    
    return 0;
}

आउटपुट

छात्र 1 का रिकॉर्ड:
  ID: 1
  नाम: Bhanu
  प्रतिशत: 86.50

छात्र 2 का रिकॉर्ड:
  ID: 2
  नाम: Priya
  प्रतिशत: 90.50

छात्र 3 का रिकॉर्ड:
  ID: 3
  नाम: Hari
  प्रतिशत: 81.50

रनटाइम इनपुट के साथ संस्करण


int main() {
    int n;
    printf("छात्रों की संख्या: ");
    scanf("%d", &n);
    
    struct Student *records = malloc(n * sizeof(struct Student));
    if (!records) return 1;
    
    for (int i = 0; i < n; i++) {
        printf("\nछात्र %d:\n", i+1);
        printf("  ID: "); scanf("%d", &records[i].id);
        printf("  नाम: "); scanf(" %29[^\n]", records[i].name);
        printf("  प्रतिशत: "); scanf("%f", &records[i].percentage);
    }
    
    // प्रिंट...
    free(records);
    return 0;
}

मेमोरी लेआउट

record[0]: [id:4][name:30][percentage:4] = 38 बाइट्स (पैडिंग सहित ~40)
record[1]: [id:4][name:30][percentage:4]
record[2]: [id:4][name:30][percentage:4]
सन्निहित मेमोरी ब्लॉक

सामान्य ऑपरेशन्स

ऑपरेशनकोड
खोजfor(i=0;i<n;i++) if(rec[i].id==key) ...
सॉर्ट (नाम से)qsort(rec, n, sizeof(rec[0]), cmpName);
फाइल में लिखनाfwrite(rec, sizeof(rec[0]), n, fp);
फाइल से पढ़नाfread(rec, sizeof(rec[0]), n, fp);

महत्वपूर्ण नोट्स

  • strcpy के बजाय strncpy या snprintf उपयोग करें (बफर ओवरफ्लो रोकथाम)।
  • बड़ी सरणी के लिए डायनामिक आवंटन (malloc) बेहतर।
  • स्ट्रक्चर पैडिंग के कारण आकार सदस्यों के योग से अधिक हो सकता है।
  1. - C# में स्ट्रक्चर (Structure) क्या है?

    परिचय स्ट्रक्चर (struct) C# में एक वैल्यू टाइप डेटा टाइप है। यह संबंधित डेटा को एक ही वेरिएबल में समूहित करने की अनुमति देता है। struct कीवर्ड का उपयोग करके परिभाषित किया जाता है। स्ट्रक्चर की विशेषताएं मेथड, फ़ील्ड, इंडेक्सर, प्रॉपर्टी, ऑपरेटर मेथड और इवेंट हो सकते हैं। परिभाषित कंस्ट्रक्टर हो स

  1. - C# में ऐरे क्या है

    एक ऐरे एक ही प्रकार के एलिमेंट्स के फिक्स्ड-साइज़ सीक्वेंशियल कलेक्शन को स्टोर करता है। एक ऐरे का उपयोग डेटा के कलेक्शन को स्टोर करने के लिए किया जाता है, लेकिन अक्सर ऐरे को एक ही प्रकार के वेरिएबल्स के कलेक्शन के रूप में सोचना अधिक उपयोगी होता है जो सन्निहित मेमोरी लोकेशन्स पर स्टोर होते हैं। C# मे

  1. - C# में ऐरे क्लास क्या है

    Array क्लास C# में सभी ऐरे का बेस क्लास है। यह System नेमस्पेस में परिभाषित है। Array क्लास ऐरे के साथ काम करने के लिए विभिन्न प्रॉपर्टीज़ और मेथड्स प्रदान करती है। Array क्लास की प्रॉपर्टीज़ निम्नलिखित हैं - नीचे दी गई टेबल Array क्लास की सबसे अधिक उपयोग की जाने वाली प्रॉपर्टीज़ का वर्णन करती है।