# txt datei erstellen



## cccpmik (11. Dezember 2006)

hey leute ich habe mal ne frage zu manchen funktionen.
also ich möchte eine *.txt datei erstellen mit visual c++. der benutzer muss den namen der txt datei eingeben. also da wird ne anfrage erstmal sein wie wollen sie es bennen und da gebe ich namen ein und ich erstelle eine txt date mit dem namen. dabei sollen noch andere einträge gemacht werden können. und das man die txt datei noch laden könnte. habe irgendwas von fputs und fgets funktionen gehört aber in visual c++ kann ich die nicht einsetzen. also wie lautet befehl um txt datein erstellen und laden


----------



## Jonas007 (11. Dezember 2006)

Eine Textdatei erstellen kannst du z.b. so:

FILE*   fp;   // Zeiger auf Datenstrom der Datei
fp = fopen("beispiel.txt","w");    // Datei neu erzeugen bzw. ueberschreiben, wenn es sie schon gibt
fprintf(fp, "Hallo!");  // reinen Text "Hallo!" in die Datei schreiben
fclose(fp);                                              // Datei schließen

Lesen kannst Du den Inhalt dieser Textdatei dann auch, musst dann bei fopen nur "r" statt "w" angeben und z.B. fscanf oder eben auch fgets verwenden.


----------



## cccpmik (11. Dezember 2006)

Jonas007 hat gesagt.:


> Eine Textdatei erstellen kannst du z.b. so:
> 
> FILE*   fp;   // Zeiger auf Datenstrom der Datei
> fp = fopen("beispiel.txt","w");    // Datei neu erzeugen bzw. ueberschreiben, wenn es sie schon gibt
> ...



wow thx es funktioniert nur ich möchte 1. wohin die txt datei gespeichert werde soll bestimmen. also zb in den ordner CD. und es soll nicht beispiel.txt abspeichern sondern so abspeichern wie ich es in der eingabe mache. bei mir steht im fenster wie wollen sie die datein nenen? und danben eingabe box und drunter button zum erstellen der txt datei. 
versteht ihr was ich meine

ps @ jonas meinste du kannst mir per icq helfen weil das ist echt dringend also einfach mal adden 201951279


----------



## Jonas007 (11. Dezember 2006)

Ich sitze leider gerade nicht an meinem Rechner, kann daher gerade nicht auf ICQ zugreifen.
Du kannst aber bei fopen beim Dateinamen auch einen kompletten Pfad angeben, also auch C:\Windows\blablabla... usw. Ansonsten wird eben immer geöffnet bzw. gespeichert in dem verzeichnis, in dem auch das Programm liegt.
Außerdem kann Du beim Dateinamen auch eine Stringvariable reingeben, somit kannst du auch Dateinamen vorher einlesen.
Wichtig ist nur, dass du an den Namen dann immer die entsprechende Dateiendung ranhängst, bei dir also txt.


----------



## cccpmik (11. Dezember 2006)

Jonas007 hat gesagt.:


> Ich sitze leider gerade nicht an meinem Rechner, kann daher gerade nicht auf ICQ zugreifen.
> Du kannst aber bei fopen beim Dateinamen auch einen kompletten Pfad angeben, also auch C:\Windows\blablabla... usw. Ansonsten wird eben immer geöffnet bzw. gespeichert in dem verzeichnis, in dem auch das Programm liegt.
> Außerdem kann Du beim Dateinamen auch eine Stringvariable reingeben, somit kannst du auch Dateinamen vorher einlesen.
> Wichtig ist nur, dass du an den Namen dann immer die entsprechende Dateiendung ranhängst, bei dir also txt.



void CTest1Dlg::OnButton1() 
{
FILE* fp; // Zeiger auf Datenstrom der Datei
CString name;
name = IDC_EDIT1;
fp = fopen( name".txt","w"); // Datei neu erzeugen bzw. ueberschreiben, wenn es sie schon gibt
fprintf(fp, "Hallo!"); // reinen Text "Hallo!" in die Datei schreiben
fclose(fp); // Datei schließen

}

unfegair so aber irngedwas habe ich da falsch gemacht


----------



## Jonas007 (11. Dezember 2006)

Du musst die Dateiendung schon vor dem Aufruf von fopen ranhängen, müsste doch mit strcat(name, ".txt"); gehen...


----------



## cccpmik (11. Dezember 2006)

Jonas007 hat gesagt.:


> Du musst die Dateiendung schon vor dem Aufruf von fopen ranhängen, müsste doch mit strcat(name, ".txt"); gehen...



habe jetzt das hier

void CTest1Dlg::OnButton1() 
{
FILE* fp; // Zeiger auf Datenstrom der Datei
CString name;
IDC_EDIT1 = name;
strcat(name, ".txt"); // Datei neu erzeugen bzw. ueberschreiben, wenn es sie schon gibt
fprintf(fp, "Hallo!"); // reinen Text "Hallo!" in die Datei schreiben
fclose(fp); // Datei schließen
}

es zeigt 2 fehler an

C:\Dokumente und Einstellungen\CCCPMIK\Desktop\projekt\test1\test1Dlg.cpp(177) : error C2440: '=' : 'class CString' kann nicht in 'const int' konvertiert werden
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
C:\Dokumente und Einstellungen\CCCPMIK\Desktop\projekt\test1\test1Dlg.cpp(178) : error C2664: 'strcat' : Konvertierung des Parameters 1 von 'class CString' in 'char *' nicht moeglich
        Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.

siehste desswegen brauchte ich dich in icq vielleicht kannste ja durch http://www.meebo.com auf dein icq zugreifen. es ist dringend


----------



## Ritchie_Fomm (12. Dezember 2006)

Hallo, 

da du einen CString benutzt kannst du auch einfach das .txt dranhängen


```
CString name;
((CEdit*)GetDialogItem(IDC_EDIT1))->GetWindowText(name);
name += ".txt";
```

und du hast das fopen vergessen. strcat macht nichts anderes als aus zwei char[] eins.

Um den Benutzer entscheiden zu lassen würde ich mir die KLasse CFileDialog mal anschauen. da bekommst du denn einen kompletten Path zurück.

Grüße
R.


----------

