-
danke für die Antwort, das fehlende e ist ein schreibfehler (Ich habs abgetippt)
Das ist also nicht der Grund für die Fehlermeldung.
Diese Struktur ist nur ein Test um die Funktion zu verstehen.
Jetzt merke ich gerade selbst den Fehler, in einer Struktur kann ich keine Werte zuweisen...
Damit mache ich ja nur das Grundgerüst.
Erst wen ich schreibe z.B. daten daten1;
Habe ich eine Struktur daten1 der ich auch Werte zuweisen kann, ist das richtig?
-
Jetzt wo du es erwähnst. Ich würde anstelle deines var[3] auch lieber ein *arr also einen Pointer auf ein array nehmen, da du sonst ja die Flexibilität verlierst. Du wolltest ja verschieden große array verwenden, oder hab ich das falsch verstanden?
Mit z.B.
char var[3];
data1.arr = var;
hast du ja dann später das Array in arr verfügbar.
sast
Mit einem typedef definierst du einen Datentyp. Das Datum selbst ist dann nur als dieser Datentyp deklariert.
-
Also dann schreibe ich folgendes
Code:
typedef struct daten{
double var[3];
double h;
float w1;
float w2;
}daten;
Wie weise ich den am einfachsten allen Variablen die Werte zu?
Und kannst du mir bitte ein Beispiel schreiben, was ich in das *.c und das *.h file schreiben muss wen ich z.B. 3 Strukturen vom Typ daten brauche?
-
Hmm,
das hab ich doch alles schon geschrieben. Und meinen Hinweis mit dem Pointer auf das Array hast du auch gleich wieder geschickt ignoriert.
Lies mal meinen ersten und den letzten Post nochmal durch. Dann versuchst du da was draus zu machen und wenn dann noch Fragen offen sind ... bin ich bestimmt heute abend nochmal online.
Ach so du musst doch nur eine struct definieren und dann davon mehrere Variablen anlegen und dem pointer das entsprechende Array übergeben.
sast
-
Entschuldige, ich glaube ich hab mich etwas falsch ausgedrückt
Wen ich daten1 erstelle, gibt es eine Möglichkeit gleich alle Werte beim erstellen zuzuweisen?
Also im sin von
Code:
daten daten1 ={1,2,3,4,5,6) oder muss ich wirklich
daten1.var[1] = 1;
.....
....
daten1.h = 4;
.....
schreiben?
(Oder mit dem Pointer
daten1.var =arr;)
Ich hoffe meine Beschreibung ist verständlich
-
wie wäre es denn mit einer daten.h
typedef struct _daten{
int id;
char *arr;
int length;
...
}daten;
extern int Berechnung1(int arr1, int pos1, int arr2, int pos2, int op1, int op2, char opid);
extern char get_arr_value(int arr_nummer, int arr_pos);
extern char* get_arr(int arr_nummer);
extern void set_arr_value(int arr_nummer, int arr_pos, char value);
...
und in der daten.c mit
daten data1, data2, data3;
char feld1[] = {1,2,3,4,5};
char feld2[] = {6,7,8,9,10};
char feld3[10];
data1.id = 1;
data2.id = 2;
data3.id = 5;
data1.arr = feld1;
data2.arr = feld2;
data3.arr = feld3;
data1.count = 5;
data2.count = 5;
data3.count = 10;
char get_arr_value(int arr_nummer, int arr_pos)
{
...
char result = SR_ERROR;
switch(arr_nummer){
case 1:
... //feldbereich überprüfen auf gültigkeit
result = *(data1.arr+arr_pos); //feld1[arr_pos];
break;
case 2:
...
}
return result;
}
char* get_arr(int arr_nummer)
{
...
}
...
und in der main.h
...
int res;
res = Berechnung1(1,0,2,0,8,1,'A');
set_arr_value(5,4,get_arr_value(1,2));
set_arr_value(5,0,(char)(res));
//usw
...
Ich weiß nicht wie ich mich sonst noch verständlicher ausdrücken soll, ohne dir die ganze Arbeit abzunehmen. Ansonsten beißt dich der Compiler auch nicht, wenn du einfach mal eine Idee ausprobierst. Im schlimmsten Fall gibt es eine Fehlermeldung, oder bei der Ausführung eine Exception, wenn du doch mal den Bereich falsch angegeben hast in der daten.c
sast