Datei durch Variable benennen
-
Da bin ich ganz Sunday's Meinung.
Was die URL-Eintragung angeht, lass die Datei einfach offen, so lange der User nicht das Programm nicht beenden will. Wenn er das dann letztlich tun will, kannst du die Datei schließen. Wie das ganze funktioniert, steht,wie du schon gesehn hast, in der FAQ. Versuch erst mal dich da reinzuarbeiten und dann, bei konkreteren Problemen, helfen wir dir weiter
-
Ahhh ich habs hinbekommen!!!
Nur wie mach ich das mit dem Dateiname ?So siehts jetzt bei mir aus:
int url() { cout<<"\nInteressengebiet der URL:\n"; cin >> interesseURL; cout<<"\n\nDie URL:\n"; cin>>eurl; ofstream yourfile ("neu.txt"); yourfile << interesseURL << eurl << endl; return main(); }
Nur noch paar Schöhnheitssachen ändern...
-
hmm wie geht das nun mit dem Namen?
-
Reyman schrieb:
?!? steht da nicht return 0; ?
Nein. Das steht an anderer Stelle, aber die mein ich nicht.
-
einfach ne char - Variable anlegen die vorher gefüllt wird und dann einfach an ofstream(deineVariable) übergeben
-
Also eigentlich:
[ccp]
int url()
{cout<<"\nInteressengebiet der URL:\n";
cin >> interesseURL;cout<<"\n\nDie URL:\n";
cin>>eurl;ofstream yourfile ("interesseURL.txt");
yourfile << interesseURL << eurl << endl;return main();
}[/ccp]
Aber es geht nicht....
WIrklich, bin ein Noob und das in der FAQ, da steht das nciht genau mit den Namen....@ Bashar
Das mit dem Return, der MUSS ja zu main() zurück gehen, da ich nciht das Programm beenden will, nur weil er sich mit dem Buchstaben vertan hat....
-
Reyman schrieb:
Das mit dem Return, der MUSS ja zu main() zurück gehen, da ich nciht das Programm beenden will, nur weil er sich mit dem Buchstaben vertan hat....
Dein Auffassung, man müsse bei return angeben, wohin die Funktion zurückkehren soll, ist Unsinn. Bitte tu was ich dir geraten habe.
-
wieso?
Und bitte helft mir mit dem Namen
habe jetzt schon:
(interesseURL + ".txt") geschrieben, geht aber nicht sagt er:
cannot add two pointersok, plus strcpy
-
Das mit dem Char ist aber jetzt doch nicht mehr so großes Problem, größer als 60 Zeichen sind die URLs sowieso nicht...
Genau. Und Daten brauchen nur zwei Stellen. Blöder Jahrtausendwechsel.
Oder genau: Und nachdem seine Festplatte formatiert wurde, er ein drei Jahre altes Backup wieder aufgespielt hatte, stellte er fest, dass fehlende Eingabeüberprüfungen leicht ausgenutzt werden können.Also wenn du schon so eine zweifelhafte Annahme machst, dann mach sie erstens explizit und zweitens sorge dafür, dass sie eingehalten wird.
Ich für meinen Teil würde ja dann doch eher zu einem std::string raten.
-
habe ich gemacht....
Nun wie geht das nun mit dem Namen?
-
char Interesse[31]; //füllen von Interesse cin>>Interesse //Datei anlegen, fertig. ofstream yourfile(Interesse);
Zu den returns. Lies am besten mal ein paar Tutorials. Weil das hier
int URL() { return main(); }
gibt keinen. Entweder du gibst einen Integer-Wert zurück oder du schreibst void statt int. So sparst du dir den Rückgabewert (also das return)
üblicherweise sieht ein return wie folgt aus
int main(int argv, char** argv) { //So sollte ein return aussehn, auch in deinen Funktionen return 0; }
Wenn du willst das das Programm weiterläuft, bau ne Schleife in dein Hauptprogramm ein, die so lange läuft bis der Benutzter will das das Prog endet.
-
Hab jetzt follgendes (wegen der überlastung des stacks ) geschrieben:
#include <iostream> #include <string> #include <fstream> using namespace std; string eurl; char frage; void einlesen(); void mail(); void url(); void schritt1(); char abfrage; string interesseURL; void main() { cout<<"URL- und Mail-Adressen Speicher (for go on, press ENTER)"<<endl; cout<<"\n\nSchon gespeicherte URLs / MAILs einsehen? (y/n)\n\n"; cin>>frage; switch(frage) //Frage Y/N einsehen oder einschreiben?? { //************************************** case 'y': case 'Y': einlesen(); break; case 'N' : case 'n' : cout<<"\nGehe zum Speicher-Menue\n"; schritt1(); break; default: cout<<"\n\nAktion abgebrochen\n\n"; main(); break; } cin.get(); schritt1(); } //****************************************************** //****************************************************** //DATENSPEICHER ABFRAGE void schritt1() { cout<<"\nWas moechten Sie speichern?\n"; cout<<"Bitte geben Sie\n\tU fuer Homepageadresse \n\tM fuer Mailadresse \nein." << endl; cin >> abfrage; switch(abfrage) { case 'U' : cout<<"URL"; url(); break; case 'M' : cout<<"MAIL"; mail(); break; default: cout<<"Aktion abgebrochen\n"; main(); break; } cin.get(); } //******************************************* //******************************************* //URL SPEICHERN void url() { cout<<"\nInteressengebiet der URL:\n"; cin >> interesseURL; cout<<"\n\nDie URL:\n"; cin>>eurl; ofstream yourfile (interesseURL+".txt"); yourfile << interesseURL << eurl << endl; main(); } //******************************************* //******************************************* //MAIL SPEICHERN void mail() { main(); } //******************************************* //******************************************* //DATEN EINLESEN void einlesen() { main(); }
Nun sagt er noch eine Fehlermeldung wegen dem "addieren" der 2 strings.
Was soll ich da nun machen?
EDIT
Habe ein paar unnütze sachen entfernt
-
So siehts jetzt aus:
#include <iostream> #include <string> #include <fstream> using namespace std; string eurl; char frage; void einlesen(); void mail(); void url(); void schritt1(); char abfrage; string interesseURL; void main() { cout<<"URL- und Mail-Adressen Speicher (for go on, press ENTER)"<<endl; cout<<"\n\nSchon gespeicherte URLs / MAILs einsehen? (y/n)\n\n"; cin>>frage; switch(frage) //Frage Y/N einsehen oder einschreiben?? { //************************************** case 'y': case 'Y': einlesen(); break; case 'N' : case 'n' : cout<<"\nGehe zum Speicher-Menue\n"; schritt1(); break; default: cout<<"\n\nAktion abgebrochen\n\n"; main(); break; } } //****************************************************** //****************************************************** //DATENSPEICHER ABFRAGE void schritt1() { cout<<"\nWas moechten Sie speichern?\n"; cout<<"Bitte geben Sie\n\tU fuer Homepageadresse \n\tM fuer Mailadresse \nein." << endl; cin >> abfrage; switch(abfrage) { case 'U' : cout<<"URL"; url(); break; case 'M' : cout<<"MAIL"; mail(); break; default: cout<<"Aktion abgebrochen\n"; main(); break; } } //******************************************* //******************************************* //URL SPEICHERN void url() { cout<<"\nInteressengebiet der URL:\n"; cin >> interesseURL; cout<<"\n\nDie URL:\n"; cin>>eurl; ofstream yourfile (interesseURL+".txt"); yourfile << interesseURL << eurl << endl; main(); } //******************************************* //******************************************* //MAIL SPEICHERN void mail() { main(); } //******************************************* //******************************************* //DATEN EINLESEN void einlesen() { main(); }
-
1. Ruf nicht main() auf! Nirgends! In keiner deiner Funktionen. Benutz eine Schleife innerhalb von main().
2. Warum machst du hunderte von Leerzeilen in dein Programm?
3. Mach nicht alle Variablen global. Gewöhn dir an, keine einzige global zu deklarieren.
4. Überleg dir nochmal ganz genau, was welche Funktion machen soll. Und benenn sie entsprechend.
-
5. Schreib die genaue Fehlermeldung hin. "Das klappt nicht" hilft niemandem.
6. Wie willst du die URL und das Interessensgebiet denn jemals wieder trennen, wenn du das direkt hintereinander speicherst? Du musst die beiden Variablen schon irgendwie voneinander getrennt speichern, z.B. so:yourfile << interesseURL << endl << eurl << endl;
-
Ist ja gut !
Wie gesagt, bin ein N00b!!!Also, ich habs jetzt so gelöst, dass ich einfach nur eine Datei schon da ist und die dann immer öffne und dann was reinschreibe und schließe.
WIe heißt davon der Befhel, also vom öffnen + reinschreiben und schließen?
Vielen Dank, für die Mühe, die ihr euch gemacht habt mir zu helfen
-
Das hast du doch schon gehabt, oder?
{ ofstream Datei("DateiName.txt"); Datei << "Das hier wird reingeschrieben" << endl; }
Geschlossen wird die Datei automatisch am Ende der Funktion (-> Destruktor).
-
Ich habes jetzt wie folgt gemacht (msdn sei dank):
ofstream yourfile ("Url.txt", ios::app); yourfile << interesseURL <<endl << eurl << endl;
Nun sitze ich noch an dem Problem, dass der nun bei interesseURL nur ein Wort einliest und wenn man 2 Wörter in den String eingibt, dass er dann die Frage nach der URL überspringt.
Abspeichern tut er aber trotzdem.void url() { cout<<"\nInteressengebiet der URL:\n"; cin>>interesseURL; //Geb ich hier 2 Wörter ein, z.B. Meine Homepage, dann... cout<<"\n\nDie URL:\n"; cin>>eurl; //Überspringt er hier einfach die Frage... ofstream yourfile ("Url.txt", ios::app); yourfile << interesseURL <<endl << eurl << endl; //und schreibt logischerweiße auch nix in die Datei main(); }
Kann mir da einer helfen?
-
@ cd9000
Ja, das hatte ich schon am Anfang, hat aber nicht geklappt.Also der hat da eine neue Datei gemacht.
Jetzt habe ich eigentlich alles soweit.
Jetzt fehlt halt nur noch das Suchscript.
Also der soll halt das Wort in der TXT suchen.
Ich würde sagen, dass man die ganze TXT in einen String einliest und in dem String nach dem Wort sucht.
Dann irgendwie das ausgibt.
Prob:
Es muss ja auch irgendwie die URL ausgegeben werden.Weiß jemand, wie man das machenn könnte?
Ich hatte ja vorerst die Idee mit dem Dateinamen.
Aber das entpuppte sich als große Arbeit und so hab ichs jetzt in eine Datei verfrachtet.So viel ich weiß geht das mit strstr.
Aber wie müsste ich das dann schreiben?Es soll ja im Moment nur den Namen suchen.
Also der speichert die eingegebene URL + Info(interesseURL) in die TXT-Datei wie folgt:
--------------------------------
Name/Info(interesseURL)URL(eurl)
--------------------------------Im Moment soll er nur den Namen/Info (interesseURL) in der TXT Datei finden.
Das ist im Moment das wichtigste.Man könnte dochauch machen, dass der, wenn man z.B. die Info REAL_GAMESTUDIO sucht dannn alles durchscuht, bis er diese Zeichenfolge findet.
Danach dann alles ausgibt, bis ein ------ erscheint (da ja das aufschreiben in die TXT Name/info
URL
-----------------------ist oder?
Wäre doch eine Möglichkeit.
-
Reyman schrieb:
Wie gesagt, bin ein N00b!!!
dann hör doch bitte auf bashar und cd und alle anderen, und hör auf, die main funktion aufzurufen.