Textdatei- Anfängerfrage^^

Painofangels

Grünschnabel
Hallo an alle!
Ich bin neu sowohl hier im Forum als auch beim Programmieren eher ein Neuling...
deshalb hoffe ich, ihr könnt mir ein kleines Programmiertechnisches Problem lösen^^

Und zwar möchte ich mir eine simple Liste erstellen, die dann in einer Textdatei gespeichert werden soll. Ich möchte aber auch gern eine Funktion einbauen, mit der man vorher während des Programmlaufs einen Namen für die neue Textdatei eingeben kann.
Ich habe mir das dann so gedacht:
Code:
#include<iostream>
#include<string>
using namespace std;
void Schreiben(string name);
FILE *Datei;
int main(void)
{
    char eingabe;
    cout<< "Was moechten sie tun?"; '/n';
    cout<< "Liste ansehen: a /n";
    cout<< "Liste erweitern: e /n";
    cout<< "Neue Liste erstellen: n /n/n";
    cin >> eingabe;

    if(eingabe == 'n')
    {
        string name;
        cout<< "bitte den Namen fuer die neue Datei eingeben: /n";
        cin>> name; '/n';
        Datei = fopen("C:\\Entwicklung\\"name".txt","w");
        fclose(Datei);
        Schreiben(name);


    }

}

void Schreiben(string name)
{
    string Text;
    Datei = fopen("C:\\Entwicklung\\"name".txt", "a");
    while(true)
    {
        cout<< "/n geben sie jetzt den Text ein /n";
        cin>> Text;
        if(Text != "ende")
        {
            fprintf(Datei, Text);
        }
        else if(Text == "ende")
        {
            fclose(Datei);
            break;
        }
    }
}


so funktioniert es leider nicht. Der Compiler meldet einen Fehler.
Es geht hier speziell um die Zeilen:
Code:
string name;
        cout<< "bitte den Namen fuer die neue Datei eingeben: /n";
        cin>> name; '/n';
        Datei = fopen("C:\\Entwicklung\\"name".txt","w");

da das ja nicht funktionierte, hab ich auch schon versucht, den Gesamten Pfad im Programm selbst einzugeben. also so:

Code:
 Datei = fopen(name,"w");

aber das funktioniert leider genausowenig.
Der compiler sagt dazu: "cannot convert Parameter 1 from std::string to const char * "

ich hoffe, dass jemand mir helfen kann, oder noch eine andere Möglichkeit anbeiten kann^^
danke schonmal im Vorraus!^^
 
Hallo,
du musst ( war auch mal mein Fehler :) ) mit strings arbeiten, und somit den Pfad und die Eingabe "verknüpfen".
Das geht so:
Code:
string alles = "c:\\entwicklung\\" + name + ".txt";

und nun würde es einen Fehler geben, wenn du dies machst:
Code:
Datei = fopen(alles,"w");
Darum machen wir:
Code:
Datei = fopen(alles.c_str(),"w");

In deiner Funktion "schreiben", hast du kein Format angegeben, mit dem in die Datei geschrieben wird.
Also machst du aus
Code:
fprintf( Datei, Text );

Einfach
Code:
fprintf( Datei, "%" , Text );

Jedoch bekomme ich eine Warnung bei dieser Syntax.
Ich hoffe, ich konnte helfen.
Gruß Hallasas
 
Ja! danke schonmal soweit....das mit der Benennung funktioniert jetzt super! Danke für die Hilfe! :-)

Allerdings habe ich jetzt ein neues Problem! Und zwar, wenn ich etwas in die Textdatei schreiben will... ich kann zwar, wie gewollt in einer endlosschleife immer neue sachen dazuschreiben, bis ich "ende" eintippe, aber wenn ich die .txt datei öffne, die ich mit dem Programm erstellt habe, ist die Datei leer :-(

die problemzeile ist denke ich:
Code:
fprintf(Datei, "", Text);

danke schonmal im vorraus für Tipps und Hinweise! :-)
 
Hi

ja der Aufruf von fprintf sollte so aussehen

Code:
   fprintf(Datei, "%s", Text"); // %s steht für String

oder deine Datei ist noch nicht geschlossen und deshalb noch nicht auf der Festplatte gespeichert.

mfg
 
Zurück