Linux C Programmieranleitung Teil 27 – Array von Strukturen

In dieser laufenden C-Programmier-Tutorial-Reihe haben wir in letzter Zeit über Strukturen diskutiert. Wir haben bereits die Grundlagen von Strukturen behandelt, wie Strukturen mit Funktionen genutzt werden können, sowie das Konzept der Zeiger auf Strukturen.

Nun werden wir das Konzept der Strukturen weiter ausbauen und anhand leicht verständlicher Beispiele diskutieren, wie man eine Reihe von Strukturen erstellt.

Array von Strukturen in der Programmiersprache C

Fangen wir also an. Hier ist eine einfache Struktur namens ’student_details‘, die, wie Sie sehen können, verwendet werden kann, um Rollennummer und Noten für Studenten zu speichern:

struct student_details{
int roll_no;
int marks;
};

Nehmen wir an, es gibt insgesamt 5 Studenten, und die Anforderung ist es, Eingaben des Benutzers über diese Studentendaten zu akzeptieren. Dann ist eine Möglichkeit, Code dafür zu schreiben:

#include <stdio.h>

struct student_details{
int roll_no;
int marks;
};

int main()
{
struct student_details obj1;
struct student_details obj2;
struct student_details obj3;
struct student_details obj4;
struct student_details obj5;


Oder vielleicht so etwas in der Art:

#include <stdio.h>

struct student_details{
int roll_no;
int marks;
};

int main()
{
struct student_details obj1, obj2, obj3, obj4, obj5;


Nun, es schadet nicht, wenn Sie die oben genannten Ansätze verfolgen. Es stellt sich nur die Frage, ob diese Ansätze skalierbar sind. Ich meine, was ist, wenn Sie statt 5, z.B. 50 Objekte oder Instanzen erstellen müssen. In diesem Fall wird das Befolgen dieser Ansätze definitiv das Schreiben und die Wartung von Code viel komplexer machen.

Gibt es also eine Lösung? Nun, ja. Ein besserer Weg ist es, ein Array mit der Struktur ’student_details‘ zu erstellen. Ich sage Ihnen, wie:

struct student_details obj[5];

Es folgt ein komplettes Programm, das dieses Strukturarray nutzt:

#include <stdio.h>

struct student_details{
int roll_no;
int marks;
};

int main()
{
struct student_details obj[5];
int i;

for(i=0;i<5;i++)
{
printf(„\n Enter roll number: „);
scanf(„%d“, &(obj[i].roll_no));
printf(„\n Enter marks (out of 100): „);
scanf(„%d“, &(obj[i].marks));
}

printf(„\n Here’s the data you’ve entered::“);

for(i=0;i<5;i++)
{
printf(„\n Roll number: %d“, (obj[i].roll_no));
printf(„– Marks: %d“, (obj[i].marks));
}

return 0;
}

Also haben wir hier die ’student_details‘-Struktur verwendet, die wir vorher besprochen haben, und ein Array mit 5 Objekten dieses Typs erstellt. Dann fordert das Programm den Benutzer auf, die Rollennummer des Schülers einzugeben und markiert eine nach der anderen. In jeder Instanz des Strukturarrays werden die jedem Studenten entsprechenden Informationen gespeichert. Und schließlich wird die gespeicherte Information als Ausgabe an den Benutzer zurückgegeben.

Hier ist der Ausgang in meinem Fall:

Enter roll number: 1

Enter marks (out of 100): 67

Enter roll number: 2

Enter marks (out of 100): 73

Enter roll number: 3

Enter marks (out of 100): 56

Enter roll number: 4

Enter marks (out of 100): 52

Enter roll number: 5

Enter marks (out of 100): 85

Here’s the data you’ve entered::
Roll number: 1– Marks: 67
Roll number: 2– Marks: 73
Roll number: 3– Marks: 56
Roll number: 4– Marks: 52
Roll number: 5– Marks: 85

Mit diesem Ansatz können Sie Ihr Programm leicht skalieren. Das heißt, selbst wenn es 50 Schüler gibt, deren Informationen gespeichert und gedruckt werden müssen, müssen Sie nur die Größe des Arrays auf 50 erhöhen und nur sehr wenige damit zusammenhängende Änderungen vornehmen. Der Rest des Codes bleibt gleich. Kurz gesagt, Sie können also die Skalierbarkeit bei der Verwendung von Arrays im Vergleich zu den Ansätzen, die wir zu Beginn des Tutorials besprochen haben, leicht handhaben.

Fazit

In diesem Tutorial haben wir das Grundkonzept des Arrays von Strukturen behandelt. Anhand von leicht verständlichen Beispielen wurde diskutiert, warum ein Strukturarray wichtig ist, wann und wie man es verwendet. Wir empfehlen Ihnen, die Beispiele aus diesem Tutorial auf Ihrer Maschine auszuprobieren. Und im Zweifelsfall oder bei Rückfragen hinterlassen Sie unten einen Kommentar.

Das könnte Dich auch interessieren …