Zahlen von String trennen

  • Hi Leute,

    ich muss ein kleines Programm schreiben das wie folgt funktionieren soll:

    Eingabe: calcul + 5.1 6.2

    Ich nehme mal an, dass er mir die beiden Zahlen addieren soll.
    Jedoch müssen diese ja in einer Zeile eingegeben werden, also String.

    Jetzt kenne ich die Funktion atof die mir jetzt die 5.1 "rausholen" kann. Aber wie mache ich das mit der 6.2 ?

    Bin mit Hilfe von jemanden darauf gekommen, dass man alles einzeln als string einlesen kann.

    Wenn ich das laufen lasse, dann gebe ich z.b. ein + 5 2.
    Und dann wird der Debuger wegen einer "unbehandelten Win32 Ausnahme" gestartet.

    Ich nehme an, dass ich etwas bei der scanf Adressierung falsch mache. Kann mir jemand helfen?

    Vielen Dank!

  • Du liest mit scanf ein, hast aber gar keinen Speicher reserviert.
    Bei scanf schreibst du &string1, string1 ist aber ohnehin schon ein Pointer, da reicht's, wenn du string1 schreibst, das ist dann schon die Adresse.
    Außerdem ist's schöner strto* statt ato* zu verwenden.

    Edit: main() sollte Rückgabewert int haben.

  • Hallo,

    also ich würd das inetwa so machen:



    hf

    RedFalcon

    EDIT: statt float kannst natürlich auch double verwenden...

    In theory there is no difference between theory and practice. In practice there is.

  • gelbasack

    Danke für den Hinweis. Wenn ich & weglasse bekomme ich die Fehlermeldung "op is used without being defined".

    MickeyM

    Ja das wäre natürlich die einfachste Lösung. Aber wir müssen das als Zeichenkette einlesen.

    Zitat


    Aufgabenstellung:
    Es sollen arithmetische Ausdrücke in den vier Grundrechenarten berechnet werden. Operator und Argumente werden als Kommandozeilenargumente angegeben.
    Zur Umwandlung einer Zeichenkette in einen double Wert kann die Funktion atof() verwendet werden.

  • Ich habe jetzt durch Tipps und das Tutorial Pronix das hier:


    argc ist die Anzahl der übergebenen Parameter, argv[1] der Operator (z.b. +), argv[2] und argv[3] die beiden Operanden.

    Wenn ich das so laufen lasse, dann bekomme ich die die Fehlermeldung ausgegeben und fertig.
    Aber was muss ich machen/hinzufügen,dass ich das auch eingeben kann?
    Also z.b.: calcul + 2 3

  • Da musst das Programm von der Konsole aus starten (unter Windows: Start->Ausführen: "cmd", unter Linux in der Shell, zB KDE: konsole oÄ).

    Dann in den Ordner wechseln, wo das fertig kompilierte Programm liegt, und dann einfach starten:

    Ohne parameter: "calcul"...
    Mit parameter: "calcul + 2 3" ...

    ...eingeben.

    In theory there is no difference between theory and practice. In practice there is.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!