auf daten in externer datei zugreifen
-
Schönen guten Morgen...
Also ich habe folgendes Problem:Ich habe eine Struktur in der ich daten vom Typ Char speicher.
Diese struktur ist in eine Externe c datei ausgelagert. (name1.c)Wie kann ich jetzt aus der name2.c auf die structur in name1.c zugreifen?
Herzlichen Dank schon mal
Marian
-
Header und extern-Deklarationen:
//name1.h typedef struct { int value; ... }my_struct; extern my_struct var; //name1.c #include "name1.h" my_struct var; //name2.c #include "name1.h" int main() { var.value=4711; ... }
-
:-S
Unser struct sieht ein wenig anders aus.
//name1.c struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }navigation[100]
und in name2.c wollen wir darauf zugreifen...
MfG Marian
-
Wie das struct aussieht, ist für den prinzipiellen Ansatz irrelevant
Du packst einfach die Typdefinition des 'struct daten' und eine extern-Daklartion für das Array in einen Header, den du dann in die name2.c einbindest - und schon kannst du aus der Datei heraus auf dein struct zugreifen.
(und du mußt daran denken, daß du beide .c Dateien zusammen linkst)
-
sieht jetzt so aus:
//name1.h struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }navigation[100]; //name1.c #include "name1.h" //name2.c #include "name1.h"
allerdings sagt der mir dann, das die structur schon in name1.c vordefiniert ist
-
Ich sagte "EXTERN-Deklaration":
//name1.h struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }; /*wichtig:*/ extern struct daten navigation[100]; //name1.c #include "name1.h" /*wichtig:*/ struct daten navigation[100]; //wenn du willst, kannst du das Array an dieser Stelle auch initialisieren //name2.c #include "name1.h"
-
Sqwan schrieb:
sieht jetzt so aus:
//name1.h struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }navigation[100];
du darfst die struct im header nicht instanziieren (das 'navigation[100]' muss da wech)
-
//name1.h struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }; extern struct daten navigation[100];
//name1.c #include "name1.h" //hier schreibe ich werte auf die struktur navigation[1].zeilen[1].swicth_l=1;
//name2.c #include "name1.h" #include <stdio.h> //hier lese ich aus printf("%i",navigation[1].zeilen[1].switch_l);
aber dann kriege ich die meldung das die navigation noch nicht deklariert ist
Woran kann das liegen?
-
Ich hoffe mal, die Zuweisung bzw. der printf()-Aufruf stehen nicht frei im Raum, sondern in eigenen Funktionen.
(und die Definition in der name1.c brauchst du auch unbedingt - extern sagt dem Compiler nur, daß irgendwo diese Variable existiert, wo das ist, legst du mit der zusätzlichen Definition fest)
-
Also ich verzweifel grade ein bsichen daran.
meine dateien:
//name1.h struct daten { struct zeile { int switch_l; int switch_r; }zeilen[3]; }; extern struct daten navigation[100];
//name1.c #include "name1.h" struct navi navigation[100]; //hier schreibe ich werte auf die struktur navigation[1].zeilen[1].swicth_l=1;
#include "name1.h" #include <stdio.h> //hier lese ich aus printf("%i",navigation[1].zeilen[1].switch_l);
das printf und das zuweisen ist bei mir auch in ner funktion
PS: geht aber immer noch nicht
-
Dann zeig doch auch bitte das (halbwegs) komplette Programm - diese Fragmente lassen sich nicht einmal compilieren. (und wenn möglich, auch die genaue Fehlermeldung deines Compilers)
-
Also... Tut mir leid das ich so spät antworte, aber der informatikunterricht ist zuende gewesen und ich hatte bis grade schule...
Hier sind beide projekte hochgeladen (die ip ist nur heute gültig)
wetterstation enthält die daten wie sie waren bevor ich es auch extern brauchte...
wetterstation enthält die dateien mit den fehlern...
dabei werden allerdings nur die dateien bjoern.h + bjoern.cpp gebraucht
so wie friede.h und friede.cpp.
Damit ihr nicht den ganzen code durchsuchen müsst...MFG und Herzlichen dank
bisher wurde mir hier immer gut geholfen+thx@all+
Marian