Problem mit Config auslesen und dem Zuordnen eines Array Wertes
-
Ja eben.
Ich möchte ja das wenn die Schleife z.b. config[8] abfragt, was es ja nicht gibt, daraus ein Display macht.
Und wenn es einen Array Wert nicht gibt sollte er doch 0 zurück liefern oder nicht?
Die ersten 6 Werte in der Config sind immer fest. Die Displays sind optional.
-
DirkB schrieb:
char* config[] = ("Frequenz", "FDM Analog Wert 1", "FDM Analaog Wert 2", "Monitoring" , "Oberes Limit", "Unteres Limit" );
Das ist falsch. Da gehört statt () {} hin.
-
Wusste ich es doch.
Hatte ich erst aber dann hat der Compiler gemeckert expected token before {
Genau genommen
main.c:19:17: Fehler: expected expression before »{« token
-
Evilmachine schrieb:
Und wenn es einen Array Wert nicht gibt sollte er doch 0 zurück liefern oder nicht?.
Natürlich nicht. Du bist hier bei C und eben nicht bei "höheren" Programmiersprachen, die bei einem Zugriff außerhalb definierter Speicher/wertebereiche glauben, irgendwas Selbstberechnetes rückgeben zu müssen.
Außerdem ist deinint i = 0;
bei dir anschließend beim Zugriff immer 0.
-
Evilmachine schrieb:
Ich möchte ja das wenn die Schleife z.b. config[8] abfragt, was es ja nicht gibt, daraus ein Display macht.
Da es das Element nicht gibt, darfst du darauf nicht zugreifen. Nein, nicht, niemals.
Nicht lesend und schon gar nicht schreibend.Evilmachine schrieb:
Und wenn es einen Array Wert nicht gibt sollte er doch 0 zurück liefern oder nicht?
C macht keine Überprüfung der Arraygrenzen.
Das kostet nur Zeit.Evilmachine schrieb:
Die ersten 6 Werte in der Config sind immer fest. Die Displays sind optional.
Dann vergleich deinen Index i doch mit der 6.
Zählt i überhaupt weiter?Du kannst dein Array auch größer machen:
char* config[20] = {"Frequenz", "FDM Analog Wert 1", "FDM Analaog Wert 2", "Monitoring" , "Oberes Limit", "Unteres Limit" , NULL}; // der Rest wird mit 0 aufgefüllt.
-
Auch wenn ich das kurz vorm ende der Schleife mit i++; einen höher setze??
Sorry wie gesagt. Ich bin C Neuling und vorher von PHP und Java gekommen^^
EDIT: Ah Danke Dirk. Jetzt füllt er zumindest die Config Werte ein. Aber er zählt nicht höher. Er nimmt überall nur Frequenz.
Aber i++; sollte doch richtig sein??
linenum++: funzt ja auch.
-
Evilmachine schrieb:
EDIT: Ah Danke Dirk. Jetzt füllt er zumindest die Config Werte ein. Aber er zählt nicht höher. Er nimmt überall nur Frequenz.
Aber i++; sollte doch richtig sein??
linenum++: funzt ja auch.
Dann schau doch mal wann (in welchem Scope) du die Varablen definierst.
linenum ist im Scope von main.
i ist im Scope deiner while-Schleife.
Und da sagst du gleich am Anfang:i = 0;
Da du i aber initialisieren musst, musst du i demnach woanders definieren.
-
Ja hatte ich eben auch gesehen. Sorry.
Hatte zwischendurch auch noch mit nem Segfault zu kämpfen.
Jetzt geht es aber soweit.
Dankeschön.
-
Evilmachine schrieb:
Hatte zwischendurch auch noch mit nem Segfault zu kämpfen
Wolltest du ein Stringliteral verändern oder an Adresse NULL schreiben/lesen?
-
Das Problem beim Segfault war, das einer der Werte NULL war und deshalb ging es nicht.