Hallo,
On Sunday, 13. January 2002 12:51, Steffen Liebergeld wrote:
double b; b = argv[x];
Das ist eine Zuweisung vom Type (double) = (char *), das kann nicht funktionieren.
Zahlen zurückzubekommen alle gescheitert (Scheint auch eher seltsam zu sein so den Variablentyp zu ändern, aber g++ nimmt das ohne meckern hin). Gibt es da noch eine Möglichkeit an die ich nicht gedacht habe?
Also meiner meckert da (2.95.4 bzw. 3.0.3), mit -Wall erst recht. Du mußt eine Konvertierungsfunktion verwenden, die den String interpretiert und ihn in eine Zahl umwandelt. Der Computer weiß ja nichts von unserem Zahlensystem, z.B. daß ein Punkt (bzw. Komma) die Dezimaltrennung ist oder ein Minus ein Vorzeichen bedeutet.
Beispiel:
#include <iostream> #include <cstdlib>
int main (int argc, char **argv) { if (argc == 2) { double b = atof(argv[1]); cout << "Argument: " << b << endl; } return 0; }
Alternativ kannst du auch Sprachen verwenden die das mit der Typisierung anders handhaben, z.B. Skriptsprachen (Perl/Python/Ruby/...), aber in C/C++ muß man entweder "casten" (bei Typen wie int, float, double, char), oder Konvertierungsfunktionen verwenden.
Josef Spillner