ERLEDIGT - In Datei schreiben mit fstream nicht möflich
-
Hallo,
ich programmiere erst seit kurzer Zeit in C++ und kenne mich daher nicht wirklich aus.Ich habe zum lernen einen kleinen Taschenrechner programmiert, welcher 2 Zahlen je nach Rechenoperator berechnet.
Nun möchte ich das Ergebnis nicht nur in der Konsole ausgeben, sondern auch in einer Textdatei speichert, sozusagen als Verlauf.
Sämtliche Berechnungen, Eingaben und Ausgaben werden durch C realisiert (int, printf, scanf).
Die Beschreibung der Datei soll in fstream, demnach in C++ stattfinden.
Anbei der Code, vielleicht habt ihr eine Idee, wieso die Datei nicht erzeugt wird. Vielen Dank schonmal

#include <stdio.h> // Include für Dateischreibung #include <fstream> using namespace std; // Variablen für Addition int add(int a,int b) { int erg; erg=a+b; return erg; } // Variablen für Subtraktion int sub(int a, int b) { int erg; erg=a-b; return erg; } // Variablen für Multiplikation int mul(int a, int b) { int erg; erg=a*b; return erg; } // Variablen für Division int divi(int a, int b) { int erg; erg=a/b; return erg; } // main int main() { // Neustart des Taschenrechners while(true) { // Eingabe der Zahlen und des Operators int x; int y; int xy; int opr; printf("Bitte geben Sie die erste Zahl ein: "); scanf("%i",&x); printf("Bitte geben Sie die Rechenoperation ein. Gültig sind +, -, * und /: "); scanf("%s",&opr); printf("Bitte geben Sie die zweite Zahl ein: "); scanf("%i",&y); // Rechnungen mit dem genannten Operatur & Fehlermeldung (else) if (opr=='+') { xy=add(x,y); printf("\n%i ",x); printf("%c ",opr); printf("%i ",y); printf("= %i",xy); } else if (opr=='-') { xy=sub(x,y); printf("\n%i ",x); printf("%c ",opr); printf("%i ",y); printf("= %i",xy); // Speicherung des Ergebnisses in eine Datei test.rtf fstream f; f.open("test.rtf", ios::out); f << "Verlauf \n" << x << opr << y << "= "<< xy << endl; f.close(); } else if (opr=='*') { xy=mul(x,y); printf("\n%i ",x); printf("%c ",opr); printf("%i ",y); printf("= %i",xy); } else if (opr=='/') { xy=divi(x,y); printf("\n%i ",x); printf("%c ",opr); printf("%i ",y); printf("= %i",xy); } else { printf("\nSie haben kein gültiges Operationszeichen angegeben!"); } // Abschlusslinie nach Ausgabe des Ergebnisses printf("\n_____________________________\n\n"); } return 0; }
-
Benutz
ofstream file("whatever.txt", ios:app); //app damit du nichts überschreibstDamit öffnest du eine Datei um in ihr zu schreiben
ifstream file("whatever.txt");Damit öffnest du eine Datei um in ihr zu lesen
-
Okay, die Datei wird erzeugt, jedoch wird sie nicht beschrieben.
So sieht der Code nun aus:
if (opr=='+') { xy=add(x,y); printf("\n%i ",x); printf("%c ",opr); printf("%i ",y); printf("= %i",xy); fstream f; ofstream file("test.txt", ios::app); f << "Verlauf \n" << x << opr << y << "= "<< xy << endl; f.close(); }
-
schau doch erst mal bevor du was Postest.du benutzt f zum schreiben und nicht file

und mach das close weg dass erledigt der Destructor.
-
Tut mir sehr Leid

Funktioniert jetzt aufjedenfall.
Dann kann ich das jetzt ordentlich formatieren. Vielen Dank
-
Das ist in weiten Teilen noch C und kein C++.
- der korrekte Header heisst
<cstdio>, und nichtstdio.h. Abgesehen davon ist er bei Benutzung von streams unnötig.
- stattprintfetc. benutzt man in C++streams, z.B.coutfür die Ausgabe undcinfür die Eingabe.#include <iostream> // für cin/cout #include <fstream> // für ofstream using namespace std; int main() { int x,y; cout << "Bitte geben Sie x ein:"; cin >> x; cout << "Bitte geben Sie y ein:"; cin >> y; cout << "Sie haben " << x << " und " << y << " eingegeben." << endl; }
-
Ist inzwischen alles geschehen

Alles C++ und kann auch schön Kommarechnung