returnen eines strings
-
hallo,
hab folgendes geschrieben
#include <stdio.h> #include <math.h> #include <stdlib.h> char fastgleich(double,double); int main (void) { double x=4.0,y=8.0; char *wert; *wert = fastgleich(x,y); printf("%c", *wert); } char fastgleich(double x,double y) { char *wert; double max; if (x==y && x!=0 && y != 0) wert = "gleich"; if (x>y || y>x) { if (x>y) max = x; else max = y; if (fabs(x-y)/max < 0.1) wert = "fast gleich"; else if (fabs(x-y)/max > 0.1) wert = "ungleich"; else wert = "2 nullen"; } return *wert; }
wenn ich das debugge dann funktioniert alles so wie ichs will, bis aus der funktion fastgleich rausgehe. also bis dahin, ist der char wert "ungleich", aber sobald ich versuche den ins main programm zu übergeben stürzt das programm ab.
kann mir jemand sagen was ich falsch mache?danke
-
hab's mal hingebogen:
#include <stdio.h> #include <math.h> #include <stdlib.h> char *fastgleich(double x,double y) { char *wert; double max; if (x==y && x!=0 && y != 0) wert = "gleich"; if (x>y || y>x) { if (x>y) max = x; else max = y; if (fabs(x-y)/max < 0.1) wert = "fast gleich"; else if (fabs(x-y)/max > 0.1) wert = "ungleich"; else wert = "2 nullen"; } return wert; } int main (void) { double x=4.0,y=8.0; char *wert; wert = fastgleich(x,y); printf("%s", wert); }
vergleich' bitte die 'char' und 'char*' mit deinem code
-
ah super, danke
-
Benutzt bitte die [cpp]-Tags. Auch du pale dog.
-
ich hoffe er weiß was da für böse sache gemacht werden
-
Tim schrieb:
Benutzt bitte die [cpp]-Tags. Auch du pale dog.
bunt genug jetzt?
-
pale dog schrieb:
Tim schrieb:
Benutzt bitte die [cpp]-Tags. Auch du pale dog.
bunt genug jetzt?
Jetzt ist es lesbarer. Danke
-
hab's mal hingebogen:
Also wenn das funktioniert, dann nur durch puren Zufall...
Grüße,
Martin
-
JimmydaMage schrieb:
Also wenn das funktioniert, dann nur durch puren Zufall...
Wieso, werden doch nur Zeiger auf Literale zurückgegeben...