Struct type mit float array - Probleme bei der Ein- bzw Ausgabe
-
Folgender programmabschnitt..
Ich hab den type ganz normal definiert und will nun erstmal zu testzwecken einen bzw 2 werte einlesen und sie danach wieder ausgeben..
Wenn ich es so programmiere wie unten, dann sind in dimensions[0] und dimensions[1] die werte 0.0 egal was ich eingeben..
Wenn ich für scanf folgendes schreibe: scanf("%f", figure.dimensions);
dann is dimensions[0] mit dem eingegebenen wert gefüllt.. Und ich weiss jetzt nich weiter.. Wäre für jede hilfe dankbarstruct figure { int nNr; float dimensions[2]; float area; enum figuur_code {circle=1, square, rectangle, triangle, ellips} code ; }; typedef struct figure FIGURE; int main(void) { FIGURE figure; int x; for(x=0;x<2;x++) { scanf("%f",figure.dimensions[x]); } printf(" ------------- %f -----------------",figure.dimensions[0]); printf(" ------------- %f -----------------",figure.dimensions[1]); }
-
scanf("%f",&figure.dimensions[x]);
Du hast die Referenz vergessen. &&&&&&
-
Du musst scanf() immer die Adresse übergeben an die das Element gespeichert werden soll. Bei
scanf("%f",figure.dimensions[x]);
ist es eben nicht die Adresse, sondern das Element selbst. Beiscanf("%f", figure.dimensions);
ist es das Array, was sich einem Zeiger auf das erste Element entspricht. Das sollte deine Probleme erklären.
-
HAHAHA, man bin ich doof
Bin den ganzen tag schon am proggen, seh den wald vor lauter bäumen nich mehrVielen dank!!
Nun hab ich allerdings noch ne frage.. Wenn ich nun z.b. den struct type mit den jeweiligen daten in eine Datei schreibe und im anschluss nach der figure suchen will.. Wie stell ich das an?
Ich bin bis jetzt soweit gekommen:printf("\nEnter the figurename: "); scanf("%s",fig); strlwr(fig); if(strcmp(fig,"circle")==0) printf("TESTSTETETSEZTEZ \n\n\n");
Aber wie genau such ich jetzt in dem enum?
Ich such ja in ner datei folgendermaßen.. Wenn ich nun nNr per eingabe angebe, klappt es auch super.. Nur ich will die datei / den speicher halt nach der eingabe von z.b. circle oben durchsuchen..fseek(p_file,(nNr-1)*sizeof(FIGURE),SEEK_SET);
-
FIGURE figure; FILE *f=fopen("datei.dat","rb"); while( fread(&figure,sizeof figure,1,f) ) { if( figure.code==circle ) puts("gefunden"); } fclose(f);