C Datei mit variablen Namen anlegen

HansJ

Mitglied
Hallo,
ich möchte eine Datei in einem Verzeichniss anlegen .

Code:
stream = fopen("\\Application\\xxxx.txt", "w+");
so funktioniert es aber xxxx ist ein Name den die Application selbst erzeugt.
Bei
Code:
stream = fopen(("\\Application\\" & szDatei), "w+");
sagt der compiler "illegal, left operand Type char"

wenn ich es mit
Code:
tchar szPfad = TEXT("\\Application\\");
wcscpy(szDatei,szPfad);
wcscat(szDatei,szDateiName);
stream = fopen(szDatei, "w+");
versuche fehlt mir ein \ und bei
Code:
tchar szPfad =TEXT("\\\Application\\\")
wird auch rum gemeckert.

Hat hier jemand eine Idee?

Hans
 
Hi.
HansJ hat gesagt.:
Bei
Code:
stream = fopen(("\\Application\\" & szDatei), "w+");
sagt der compiler "illegal, left operand Type char"
Es gibt in C keinen Operator mit dem man Strings konkatenieren kann.

HansJ hat gesagt.:
wenn ich es mit
Code:
tchar szPfad = TEXT("\\Application\\");
wcscpy(szDatei,szPfad);
wcscat(szDatei,szDateiName);
stream = fopen(szDatei, "w+");
versuche fehlt mir ein \ und bei
Code:
tchar szPfad =TEXT("\\\Application\\\")
wird auch rum gemeckert.

Hat hier jemand eine Idee?
Entweder du verwendest einfache Schrägstriche oder du setzt für jeden umgekehrten Schrägstrich der noch fehlt 2 umgekehrte Schrägstriche ein.

Gruß
 
Leider funktioniert das nicht. Ich habe es noch mal so probiert.

Code:
tchar szPfad = TEXT("\\Application\\");
tchar szDateiName = TEXT("28042006.txt");

wcscpy(szDatei,szPfad);
wcscat(szDatei,szDateiName);
stream = fopen(szDatei, "w+");
In szDatei steht \\Application\\28022006.txt

Die Datei wird nicht angelegt.

Schreibe ich aber
stream = fopen( "\\Application\\28022006.txt", "w+");

funktioniert es.
 
Versuch mal statt der wide character Funktionen die generischen Funktionen _tcscpy und _tcscat zu verwenden.

/edit: Und _tfopen statt fopen.

Gruß
 
Zuletzt bearbeitet:
Nein das funktioniert leider auch nicht.

Ich habe noch eine Warnung von dem Compiler entdeckt.

Für die Zeile
Code:
stream = fopen(szDatei, "w+");
wird die Warnung C4133: function: incompatible types from TCHAR [34] to const char * angezeigt
 
HansJ hat gesagt.:
Code:
stream = fopen(szDatei, "w+");
wird die Warnung C4133: function: incompatible types from TCHAR [34] to const char * angezeigt
Du solltest ja auch _tfopen nehmen. (/edit: und dann natürlich den zweiten Parameter auch mit dem TEXT() Makro übergeben)

Gruß
 
Danke jetzt funktioniert es, der Hinweis "den zweiten Parameter auch mit dem TEXT() Makro übergeben" war entscheidend.

Hans :)
 
Zurück