Variablenname "hochzählen"

Gast #2568132
Guten Morgen,

Ich programmiere in C und habe eine Variable vom Typ struct, die 
„eintrag1“ heißt.
Jetzt möchte ich im Programm automatisch den Namen der Variable 
hochzählen und neue struct-Variablen definieren (eintrag1. eintrag2…).

Bei einem Int hätte ich den Namen in zwei chars zerlegt, mit strcpy und 
strcat zusammengefügt und die Funktion atoi verwendet, aber hier komme 
ich seit zwei Tagen nicht weiter. Im Studium haben wie nur die 
Grundbegriffe von C gelernt und über Google habe ich auch nicht 
gefunden, wobei ich zugeben muss auch nicht genau zu wissen wonach ich 
eigentlich suchen soll:).

Ich hoffe, dass ihr mir helfen könnt.

Gruß
Lena
Ich glaub in C gibt es das nicht. Hab ich jedenfalls noch nirgends 
gesehen. Ich kenn das nur bei PHP. Dort hat jede Variable ein $-Zeichen 
voran stehen. Und wenn man da auf $eintrag1 zugreifen will, kann man 
auch schreiben:
$var = "eintrag1";
echo $$var;

Doch PHP gilt als eine uneffektive Sprache, dafür meines Erachtens aber 
einfacher als andere. Keine Datentypen z.B. oder man braucht bei Arrays 
keine Größe am Anfang festlegen, sondern man sagt, eine Variable ist ein 
Array und das wars.
Lena schrieb:
> Ich programmiere in C und habe eine Variable vom Typ struct, die
> „eintrag1“ heißt.
> Jetzt möchte ich im Programm automatisch den Namen der Variable
> hochzählen und neue struct-Variablen definieren (eintrag1. eintrag2…).

Wozu das Ganze?

Du erzählst, wie_ Du _irgendetwas implementieren willst; es wäre 
wesentlich sinnvoller, wenn Du zuerst einmal berichtest, was Du da 
machen willst. Beschreibe also zunächst bitte, was dieses irgendetwas 
ist.

Als nächstes solltest Du vielleicht einmal Dich anhand eines C-Lehrbuchs 
Deiner Wahl mit der Sprache "C" etwas vertrauter machen.

Bernhard
Nico Sch. schrieb:
> Stefan schrieb:
>> Es gäbe noch den Verkettungsoperator ##
>
> Was macht der? Google filtert leider das ## heraus.

Aber das "Verkettungsoperator" wohl kaum.

Lena schrieb:
> Bei einem Int hätte ich den Namen in zwei chars zerlegt, mit strcpy und
> strcat zusammengefügt und die Funktion atoi verwendet

Was mit Sicherheit nicht das von dir erwartete Ergebnis hätte.
Persönliche Seite
Lena schrieb:
> Jetzt möchte ich im Programm automatisch den Namen der Variable
> hochzählen und neue struct-Variablen definieren (eintrag1. eintrag2…).
>
> Bei einem Int hätte ich den Namen in zwei chars zerlegt, mit strcpy und
> strcat zusammengefügt und die Funktion atoi verwendet, aber hier komme
> ich seit zwei Tagen nicht weiter. Im Studium haben wie nur die
> Grundbegriffe von C gelernt und über Google habe ich auch nicht
> gefunden, wobei ich zugeben muss auch nicht genau zu wissen wonach ich
> eigentlich suchen soll:).

Naja, das ist kein Wunder, sowas geht in C naemlich nicht. C ist keine 
interpretierte Sprache, da muessen fuer den Compiler logischerweise die 
Bezeichner auch zur Compilezeit bekannt sein. Rein theoretisch kann man 
gerade bei Strukturen durch einen entsprechenden Speicherzugriff die 
Namen "umgehen", das ist aber gefaehrlich, da man sich darauf verlassen 
koennen muss, wie die Strukturen im Speicher organisiert werden und das 
kann man bei unterschiedlichen Compilerversionen nicht wirklich.

Greets,
Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.