2017-07-05 2 views
-1

Ich bin wirklich neu in c und verwendet eine Struktur, um ein Array zurückzugeben, ich habe es geschafft, die Struktur einfach gut und verwenden Sie die Struktur als auch, aber ich machte einen wirklich hässlichen Weg Importieren meines Arrays in meine Struktur. Gibt es einen Weg, wie ich das mit einer for-Schleife machen kann?Mit einer Strukturvariable das Label darstellen

Hier ist mein Code, den ich zur Zeit das Array in der Struktur verwenden übertragen:

result.a = input3[0]; 
result.b = input3[1]; 
result.c = input3[2]; 
result.d = input3[3]; 
result.e = input3[4]; 
result.f = input3[5]; 
result.g = input3[6]; 
result.h = input3[7]; 
result.i = input3[8]; 

Ich habe versucht, es so arbeiten zu lassen:

for (char j = 'a'; j <= 'i'; j++) 
{ 
    result.j = input[j - 97]; 
} 

Aber wie sinnvoll ist, wird der Fehler Ich bekomme ist "j": ist kein Mitglied von Werten und weigert sich zu kompilieren. Welche Formatierung würde es erfordern, um dem Programm zu verdeutlichen, dass ich versuche, auf eine Variable und nicht auf den Index der Struktur zu verweisen? Danke!

+0

Bitte zeigen Sie ein [mcve]. – OldProgrammer

+0

So funktioniert 'C' nicht. 'Lua' funktioniert so. 'Perl' macht etwas Ähnliches. Aber "C" ist sehr, sehr anders. – iehrlich

+0

Geben Sie den Teil des Codes an, in dem Sie Ihre Struktur definiert haben. Unter der Annahme, dass "a" den Code "97" hat, ist jede Maschine inkorrekt, stattdessen verwenden Sie Ausdrücke wie diese, j-'a''. –

Antwort

-1

In C sind die Namen der Mitglieder von Strukturen dem Compiler bekannt; Sie werden nur beim Kompilieren verwendet. Sie sind nicht Teil des laufenden Programms (mit Ausnahme von Debugging-Funktionen und möglichen Compiler-spezifischen Erweiterungen der Sprache).

Ein Hauptzweck von Arrays besteht darin, mit mehreren Elementen auf programmatische Weise zu arbeiten (dh auf eine Weise, die beim Ausführen des Programms berechnet wird). Indizes dienen zur Auswahl von Mitgliedern.

Wenn Sie mehrere Elemente in einer Struktur haben wollen, die Sie programmatisch ansprechen können, dann können Sie Ihre Struktur definieren ein Array in ihm haben, wie zum Beispiel:

struct Foo; 
{ 
    int MyArray[10]; 
} 
… 
struct Foo MyFoo; 

Dann können Sie auf Posten beziehen, in das Array innerhalb MyFoo mit MyFoo.MyArray[i]. Sie müssen Zahlen für Indizes verwenden.

+0

Wenn das einzige Element der Struktur ein Array ist, sollten Sie stattdessen nur ein leeres Array verwenden. (Ich bin mir sicher, dass Sie das wissen, aber hoffen Sie, dass das OP meinen Kommentar liest. Oder Sie können Ihre Antwort bearbeiten, um diesen Vorbehalt einzubeziehen.) –

+0

Danke! Ich habe es zur Arbeit gebracht! – almo121

+1

@ Code-Apprentice: Sie könnten ein leeres Array verwenden, aber sie sagten, dass sie es verwenden, um ein Array zurückzugeben, und Sie können ein Array nicht von einer Funktion zurückgeben.Wir könnten verschiedene Möglichkeiten diskutieren, um Array-Inhalte von einer Funktion zurückzugeben, wie zum Beispiel die Übergabe der Adresse durch den Anrufer oder die dynamische Speicherzuweisung, aber das ist eine Dose Würmer für einen neuen Lernenden. –

0

struct und array sind zwei verschiedene Tiere und Sie sollten diejenige verwenden, die am besten für den Job geeignet ist. Ein array soll eine Liste von Elementen desselben Typs speichern. Auf die Elemente eines Arrays wird über einen numerischen Index zugegriffen, so dass die Elemente geordnet sind. Auf der anderen Seite soll ein struct verwandte Daten enthalten, die von verschiedenen Typen sein können. Sie greifen auf die Mitglieder einer Struktur nach Namen zu. Dies erlaubt uns, die Reihenfolge der Elemente zu ignorieren.

Zugegeben, ein Array in einem struct haben kann, aber es sei denn, andere Datenelemente in der struct sind auch, Sie sollten nur mit einem nackten Array anstelle eines struct mit einem Array Mitglied.

Verwandte Themen