 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:10 Titel: |
|
|
du brauchst natürlich die Zeilen
Code: |
#include <fstream>
using namespace std;
|
_________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:10 Titel: |
|
|
Wenn du meine vorherigen Posts aufmerksamer gelesen hättest, wüsstest du auch was man für includes einbinden muss... okay nochmal...
Code: |
// Alle OHNE .h !!
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:13 Titel: |
|
|
@hazel: geile sig:) ist mir bis jetzt noch gar nicht aufgefallen... _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:18 Titel: |
|
|
Zitat: |
ich gehe jetzt mal davon aus das datei sowas ähnliches wie FILE * Datei ist, also eine Variable mit die Informationen zur Datei enthält(Dateiname, aktuelle Position...). Stimmt das Überhaupt?
|
Ja, fast... die Streamklasse enthält eine Datezugriffsklasse und ermöglicht dir die Inhalte bequem auszulesen.
Zitat: |
Und dann wird mit:
Code:
ifstream datei(MainDatei);
die MainDatei (char MainDatei[18], enthält den Dateiname) gar nicht geöffnet?
Tut mir ja leid, das ich dumm Frage, aber ich habs irgendiwe noch nicht so ganz verstanden.
|
Ja, die Datei mit dem Dateinamen der dem Konstruktor übergeben wird, wird versucht zu öffnen(der Satz hört sich irgendwie falsch an... :P).
Ich habe nix gegen deine Fragen, sondern nur dagegen, dass du dir anscheinend meine Posts nicht richtig durchgelesen hast. Wenn ich etwas lernen will dann beschäftige ich mich intensiv mit der Materie und frag nicht ob mir jemand den Code umschreiben kann. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:30 Titel: |
|
|
Hazel hat Folgendes geschrieben: |
Ja, die Datei mit dem Dateinamen der dem Konstruktor übergeben wird, wird versucht zu öffnen(der Satz hört sich irgendwie falsch an... ).
|
Ja, es wird versucht, die Datei mit dem Dateinamen, der dem Konstruktor übergeben wird, zu öffnen.
So meinst du das wohl  _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:33 Titel: |
|
|
Danke... ich brauche mehr Schlaf und weniger Stress. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 18:06 Titel: |
|
|
Also:
Ein FETTES Dank an alle die mir hie so viel geholfen haben! Ich habs jetzt endlich raus, und hab ganz nebenbei noch eine weitere Methode kennen gelernt, wie ich Textdateien lesen kann.
Es läuft jetzt endlich alles so, wie ich es mir vorgestellt habe. Darum hab ich beschlossen für alle die es interesiert noch mal den vollständigen Quelltext abzubilden. Man kann sich das Projekt aber auch in Kürze auf www.C3-Soft.de.vu runterladen.
Also, danke noch mal an alle!
Code: |
#include <iostream.h>
#include <stdio.h>
#include <string>
#include<string>
#include<fstream>
void Write(char Text[]);
using namespace std;
int main()
{
char ProjektName[8];
char MainDatei[18], SeiteDatei[18], TitelDatei[18], NeueDatei[18], BottomDatei[18];
string zeile;
FILE * Datei=NULL, * DSeite, *DTitel, *DNeu, *DBottom;
char Puffer2[255];
cout << "Meine Webseite V. 0.1\n";
cout << "Geben sie den Projektnamen ein: (max. 8 Buchstaben)\n";
cin >> ProjektName;
sprintf(MainDatei, "%s\\main.txt", ProjektName);
cout << "\nProjekt Main-Datei: " << MainDatei << "\n";
ifstream datei(MainDatei);//Die Main Datei laden
cout << "\nDas Projekt wurde geöffnet!\n";
while(!datei.eof())
{
//Die nächste Datei aus der Projektdatei öffnen
getline(datei, zeile);
//fgets(Puffer, 255, Datei);
sprintf(SeiteDatei, "%s\\%s.txt", ProjektName, zeile.c_str());
DSeite=fopen(SeiteDatei, "r");
if(NULL!=DSeite)
{
cout << SeiteDatei << " wurde geladen\n";
}
else
{
Write("Fehler beim öffnen der Datei:-");
Write(SeiteDatei);
}
//Den Seitenkopf laden
sprintf(TitelDatei, "%s\\head.txt", ProjektName);
DTitel=fopen(TitelDatei, "r");
if(NULL==DTitel)
{
Write("Titeldatei konnte nicht geöffnet werden");
}
//Das Seitenende laden
sprintf(BottomDatei, "%s\\bottom.txt", ProjektName);
DBottom=fopen(BottomDatei, "r");
if(NULL==DBottom)
{
Write("BottomDatei konnte nicht geöffnet werden");
}
//Die neue Datei erstellen
sprintf(NeueDatei, "%s\\%s.htm", ProjektName, zeile.c_str());
DNeu=fopen(NeueDatei, "w");
if(NULL==DNeu)
{
Write("Neue Datei konnte nicht erstellt werden");
Write(NeueDatei);
}
while(!feof(DTitel))//Die Titeldatei in die NeueDatei schreiben
{
fgets(Puffer2, 255, DTitel);
fprintf(DNeu, Puffer2);
}
fclose(DTitel);
while(!feof(DSeite))//Die eigentliche Seite in die NeueDatei schreiben
{
fgets(Puffer2, 255, DSeite);
fprintf(DNeu, Puffer2);
}
fclose(DSeite);
while(!feof(DBottom))//Die Seitenendedatei hinzufügen
{
fgets(Puffer2, 255, DBottom);
fprintf(DNeu, Puffer2);
}
fclose(DBottom);
//und die neue Datei schließen
fclose(DNeu);
cout << "Datei erfolgreich hinzugefügt\n";
}
cout << "Ihr Projekt wurde erfolgreich abgeschlossen!\n";
cin >> ProjektName;
return 0;
}
void Write(char Text[])
{
FILE *Datei;
Datei=fopen("Error.txt", "a");
fprintf(Datei, "%s\n", Text);
fclose(Datei);
} |
|
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.03.2004, 18:59 Titel: |
|
|
Ich würde dir noch empfehlen, anstelle von
Code: | char MainDatei[18], SeiteDatei[18], TitelDatei[18], NeueDatei[18], BottomDatei[18]; |
zu benutzen, dieses zu benutzen:
Code: | string MainDatei, SeiteDatei, TitelDatei,NeueDatei; |
_________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.03.2004, 20:42 Titel: |
|
|
Es gibt leider wieder ein Problem:
Das Programm lässt beim kopiren % Zeichen weg.
Wenn ich also schreibe:
Code: |
<table border="1" bordercolor="#8080FF" width="100%"> |
wird daraus nach dem kopieren:
Code: | <table border="1" bordercolor="#8080FF" width="100"> |
damit es richtig funktioniert müsste ich im HTMLtext
<table border="1" bordercolor="#8080FF" width="100%%">[/code]
schreiben.
Anscheinend interpretiet fgets() das als Sonderzeichen, aber es ist unakzeptabel im Quelltext immer %% schreiben zu müssen. Die logische Konsequenz wäre also komplett von
Code: | FILE *Datei=fopen("dsfg.txt", "r"); | auf Code: | ifstream Datei("dsfg.txt"); | umzusteigen. Nur fehlt mir dann noch die Funktion zum schreiben von Zeilen (also das Gegneteil von getline()).
Also: Haltet ihr den Umstieg auch für sinnvoll, und wie heißt die Funktion zu schreiben von Strings in Dateien.
Wie kann ich testen ob die ifstream datei("dsfg.txt") geöffnet werden konnte?
Ist
Code: | ifstream datei("dsfg.txt"); |
das selbe wie:
[code]ifstream datei;
datei.open("dsfg.txt");[code];
und kann man mit dem öffnen Schreiben und lesen(man muss ja nich den Modus angeben)?[/code] |
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 11.03.2004, 22:16 Titel: |
|
|
ein ifstream ist zum lesen, zum schreiben brauchst du ein ostream. du kannst auch mit einem fstream beides gleichzeitig. ich tipp dir mal ein Beispiel aus nem Buch ab:
Code: | #include <fstream>
#include <iostream>
using namespace std;
int main()
{
const char* const dateiname = "datei.txt";
fstream datei(dateiname,ios_base::in | ios_base::out | ios_base::trunc);
if(!datei)
{
cerr << "Fehler beim Öffnen der Datei " << dateiname << endl;
}
else
{
datei << 123;
datei.seekg(0,ios_base::beg); // An den Dateianfang gehen
int i;
datei >> i;
cout << "In " << dateiname << " steht: " << i << endl:
}
return 0;
} |
noch kurz die Erklärungen zu ios_base:
in = Datei öffnen zum Lesen
out = schreiben
trunc = alten Dateiinhalt überschreiben, falls die Datei schon existiert _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 11.03.2004, 22:19 Titel: |
|
|
Das % verschwindet weil du fprintf benutzt... die Funktionen der printf Familie benutzen das als Platzhalter. Probier mal das aus:
Code: |
printf("Eine Zahl: %i", 10);
|
Die 10 wird für das %i eingesetzt. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.03.2004, 12:52 Titel: |
|
|
Ist das mit dem ios_base umbeding nötig?
Bisher hab ich das ja noch nicht beutz. Reicht es wenn ich einfach statt:
Code: | ifstream Datei("text.txt") |
Code: | fstream Datei("text.txt") |
benutze. Dann müsste ich doch weiterhin mit.
Code: | string zeile;
while(!Datei.eof())
{
getline(Datei, zeile);
cout << zeile.c_str() << '\n';
}
|
Die Datei Zeile für Zeile lesen können. Aber wie heißt dann die entsprechende Funktion, mit der ich einen String in die Datei schreiben kann? Und wie kann ich beeinflussen, ob der String dann in eine neue Reihe (was ja geschehen müsste, wenn die Funkton das Gegenteil von getline() ist) oder an die aktuelle Zeile geschrieben wird?
getline() ließt ja meines Wissens nach die komplette aktuelle Zeile in den String, fgets() aber einer bestimmten Position(nich umbedingt am Anfang der Reihe) und in einer gewissen Länge (aber nur bis zum nächsten Zeilenumbruch).
Gibt es irgendwo vieleicht ein guten Artikel über die Textdateienverarbeitung mit fstream Objekten? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|