Printf von Arrays die sich in einer Struktur befinden
-
Hallo ihr,
habe eine header datei mit
struct parabel {
double a;
double b;
double c;
};und in meiner int main hab ich stehen:
struct parabel p[] = {{1,2,3}, // 2
{2,5,-19}, //-22
{0,0,0},
{-1,0,0} // 0
};Nun möchte ich nach einigen sortierschritten das aktuelle array anzeigen. Wie mache ich das so einfach wie möglich.
Habe schon verschiedene Dinge probiert. unter andrem
printf("Array is %s:%s:%s\n", p[0],p[1],p[2],p[3]); gibt mir auch den Fehler:expects char but type is struct parabel??
Ich bin um baldige Hilfe sehr dankbar.
-
Das %s bei
printf
steht für string. (nicht für struct).
Da ein String in C aus einemchar
-Array besteht, erwartetprintf
auch ein char* (deine Fehlermeldung ist falsch, du hast den * unterschlagen)Du musst jedes Element der
struct
und auch jedes Element des Arrays extra ausgeben.
Das Array kannst du mit einer Schleife machen.Der Formatspecifier für
double
ist %f
-
Ok eine Schleife. Wie mach ich das dann für dieses Beispiel?
Das Argument: "format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘struct parabel’ [-Wformat=].
Für %f oder auch %d gibt er mir aus "array subscript is not an integer".
-
Miciku schrieb:
Ok eine Schleife. Wie mach ich das dann für dieses Beispiel?
Das Argument: "format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘struct parabel’ [-Wformat=].
Für %f oder auch %d gibt er mir aus "array subscript is not an integer".
Könnte man das "printf("Array is %s:%s:%s\n", p[0],p[1],p[2],p[3]);" noch anpassen das es funktioniert?
-
Du kannst in printf nicht direkt die Struktur ausgeben. Aber du kannst es z.B wie folgt machen:
int main(void) { int i; struct parabel p[] = { {1,2,3}, {2,5,-19}, {0,0,0}, {-1,0,0} }; for ( i = 0; i < 4; ++i ) { printf("(%lf,%lf,%lf)\n", p[i].a, p[i].b, p[i].c); } return 0; }
-
Super vielen dank
Wieder was gelernt.