Textprogramm!!!+speichern und öffnen
-
Schreibe gerade ein Betriebssystem und dazu ein Textprogramm.
wie kann man (wenn ein Programm schon einmal geschlossen wurde) Textdateien ladencase 'a':for(int i = 0;i<zaehler;i++) { if(text[i] == '#') { cout << endl; } cout << text[i]; } cout << "\n\nWollen Sie speichern(y\\n)\n"; cin >> Auswahl; if(Auswahl == 'y') { FILE *stream; char msg[20]; /* Öffnet eine Datei zur Aktualisierung */ stream = fopen("Textprogramm.txt", "w+"); /* Schreibt einen String in die Datei */ fwrite(text, strlen(text), 1, stream); /* Setzt den Dateizeiger an den Dateianfang fseek(stream, 0, SEEK_SET); /* Liest einen String aus der Datei */ fgets(msg, strlen(text)+1, stream); /* Zeigt den String an */ printf("%s", msg); fclose(stream);break; } break; case 'm':break; } break; //------------------------------------------------------------------------ case 'o': FILE *stream; char msg[20]; //öffnet Datei freopen ("Textprogramm.txt","r",stream); /* Setzt den Dateizeiger an den Dateianfang */ fseek(stream, 0, SEEK_SET); /* Liest einen String aus der Datei */ fgets(msg, strlen(text)+1, stream); /* Zeigt den String an */ cout << "Der Text:\n\n"; printf("%s",text,msg); fclose(stream); getchar(); getchar(); break;φζηΓΔθψωλνΣ
-
Hallo,
Ich verstehe nicht ganz dein Problem:
wie kann man (wenn ein Programm schon einmal geschlossen wurde) Textdateien laden
....
Wenn ein Programm schon einmal geschlossen wurde!?
MFG winexec*
-
Hallo
Bist du denn mit dem BS schon fertig?
chrische
-
1. ja mit dem OS, bin ich fertig!!
2. Wenn ich den Text speichere und dann sofort lade, dann funktioniert es.
Aber wenn ich das Programm schließe und dann wieder starte ist die Textdatei leer. Als ob beim Laden die .txt Datei überschrieben wird.Hier der ganze Code
#include <iostream> #include <stdlib.h> using namespace std; //------------------------------------------------------------------------------------ int Hilfe() { char Auswahl; cout << "\a\a -------------------------------------------------\n"; cout << " Willkommen bei der MF Softwareproduktions Hilfe\n"; cout << " -------------------------------------------------\n\n"; cout << "s........Das Speichern\n"; cout << "b........Befehle\n"; cout << "p........Die Programmiersprache IPL\n"; cin >> Auswahl; switch(Auswahl) { case 's': cout << "\n\nDas Speichern:\n"; cout << "Keine Zwielaute!\n"; cout << "Jeder Text wird auf Name.txt gespeichert(in dem Ordner in dem Sie\ndas MF Softwareproduction Texttool installiert haben"; cout << "Zum Oeffnen dieses Textes verwenden Sie im\nHauptmenue den Auswahlpunkt ""oeffnen""\n"; getchar(); break; case 'b': cout << "Die Befehle:\n"; cout << "Leerzeichen(Funktionszeichen): Geben Sie ""-"" fuer ein Leerzeichen ein\n"; cout << "Absatz(Funktionszeichen): Geben Sie ""#"" fuer einen Absatz ein\n"; cout << "Fertig(Funktionszeichen): Geben Sie ""+"" wenn der Text fertig ist ein\n"; cout << "Alle anderen Zeichen sind primaer zum erstellen des Textes gedacht\n"; cout << "\aHINWEISS: Funktionszeichen duerfen nicht im Text inkludiert werden\n\n\n"; getchar(); break; } getchar(); } //-------------------------------------------------------------------------------------------- int main(int argc, char *argv[]) { char Auswahl, zaehler; zaehler = -1; char text[100000]; //--------------------------------------------------------------------------------------------- while(Auswahl != 'q') { cout << "\n\n -------------------------------------\n"; cout << " || MF Softwareproductions Texttool ||\n"; cout << " -------------------------------------\n\n\n\n"; cout << "n........Neuer Text"<<endl; cout << "h........Hilfe"<<endl; cout << "o........oeffnen\n"; cout << "q........Quit\n"<<endl; cin >> Auswahl; switch(Auswahl) { //--------------------------------------------------------------------- case 'n': cout << "Text:\n\n"; do { zaehler++; cin >> text[zaehler]; if(text[zaehler] == '-') { text[zaehler] = ' '; } }while(text[zaehler] != '+'); cout << "\n\na......Text anzeigen\n"; cout << "m......Hauptmenue\n"; cin >> Auswahl; switch(Auswahl) { case 'a':for(int i = 0;i<zaehler;i++) { if(text[i] == '#') { cout << endl; } cout << text[i]; } cout << "\n\nWollen Sie speichern(y\\n)\n"; cin >> Auswahl; if(Auswahl == 'y') { FILE *stream; char msg[20]; /* Öffnet eine Datei zur Aktualisierung */ stream = fopen("Textprogramm.txt", "w+"); /* Schreibt einen String in die Datei */ fwrite(text, strlen(text), 1, stream); /* Setzt den Dateizeiger an den Dateianfang */ fseek(stream, 0, SEEK_SET); /* Liest einen String aus der Datei */ fgets(msg, strlen(text)+1, stream); /* Zeigt den String an */ printf("%s", msg); fclose(stream);break; } break; case 'm':break; } break; //------------------------------------------------------------------------ case 'o': FILE *stream; char msg[20]; //öffnet Datei freopen ("Textprogramm.txt","r",stream); /* Setzt den Dateizeiger an den Dateianfang */ fseek(stream, 0, SEEK_SET); /* Liest einen String aus der Datei */ fgets(msg, strlen(text)+1, stream); /* Zeigt den String an */ cout << "Der Text:\n\n"; printf("%s",text,msg); fclose(stream); getchar(); getchar(); break; //------------------------------------------------------------------------ case 'h':Hilfe();break; //------------------------------------------------------------------------ } } return 0; }
-
Hallo,
Ich kenn mich leider nicht sehr mit C aus, aber ich glaube du vergisst etwas mit dem Buffer.
In C++ funktioniert das:
stream.open ("Textprogramm.txt"); stream.getline(text,50); //natürlich nicht das gleiche wie zeichen einzulesen text[50] = '\0'; cout << "Der Text:\n\n"; cout << text; stream.close();Nebenbei: Wenn du das Programm neustartest und du strlen(text) ausführst bekommst du 0 zurück. Das ist dir klar?
Edit*: Ich habe es einmal mit C ausprobiert:
case 'o': FILE *streamA; char msg[20]; //öffnet Datei streamA = fopen ("Textprogramm.txt","r"); fseek(streamA, 0, SEEK_SET); fgets(msg, 10, streamA); msg[14] = '\0'; cout << "Der Text:\n\n"; printf("%s",msg); fclose(streamA); getchar(); getchar(); break;funktioniert doch einbahnfrei oder?
MFG winexec*
-
Braucht man da eine bestimmte Headerdatei,
oder fehlt noch was?
-
Danke, hat sich erledigt!
Kennst du Assembler?
-
Hallo,
Kennen.. sicher
MFG winexec*
-
Beim öffnen gibt das Programm immer nur eine Zeile aus.
Kann man da irgendwie in die nächste Zeile springen?