Ich bin für die letzten 6 Stunden rumhängen und versuchen, dieses verdammte Problem zu lösen. Zuerst bin ich ein kompletter Neuling in c-Programmierung, also erwarte nicht zu viel von mir bitte .. Ich muss ein Programm schreiben, das ein Integer-Array innerhalb einer Struktur erstellt. Also habe ich einen Header geschrieben und neben dem main eine andere Quelldatei namens "intarray.c" erstellt, weil ich das tun muss. Ich habe alles usw. usw. eingefügt und brauche jetzt eine Funktion, die ein Argument "int n" erhält, das verwendet wird, um das int-Array a [n] innerhalb der Struktur zu erzeugen. Aber ich kann das nicht zur Arbeit bringen. Sorry für meine schlechte Erklärung, aber ich weiß nicht, was zum Teufel ich hier mache. Ich habe auch versucht, mit Zeigern zu arbeiten, aber das hat mich verwirrt und ich bin mir nicht sicher, ob sie notwendig sind.C - Erstellen einer Struktur in einer Quelldatei
Mein Header sieht wie folgt aus:
#ifndef INTARRAY_H_INCLUDED
#define INTARRAY_H_INCLUDED
struct IntArray
{
int length;
int numbers[];
};
void create(int);
void destruct();
void read(int);
void write(int, int);
#endif // INTARRAY_H_INCLUDED
und meine Funktion sieht wie folgt aus:
create(int n)
{
struct IntArray arr;
arr.length = n;
arr.numbers[n];
}
Aber jetzt kann ich die Struktur nicht in anderen Funktionen nutzen, zum Beispiel wenn ich in das Array an einer bestimmten Position schreiben möchte. Wie kann ich das lösen? Und sry für dumme Fragen.
Dieses Snippet wird nicht einmal kompiliert. Lesen Sie mehr über flexible Array-Mitglieder und dynamische Speicherzuweisung. Deine Funktionsprototypen sind auch falsch. Kurz gesagt: zu viele Fehler in fast keinem Code. Wiederholen Sie Ihre Kursunterlagen oder erhalten Sie ein gutes C-Buch und fragen Sie Ihren Tutor um Rat. – Olaf
'struct IntArray * erstellen (int n) {Struktur IntArray * arr = Calloc (1, Größe von (* arr) + n * sizeof (int)); if (arr) {arr.Länge = n; } Rückkehr arr; } ' – BLUEPIXY
Wenn eine Struktur ein flexibles Array-Element hat, muss es mit' malloc() 'zugewiesen werden, damit Sie die Größe des gewünschten Arrays hinzufügen können. – Barmar