[C] Dateinamen erstellen

Buba235

Erfahrenes Mitglied
Hallo Leute!


Wie kann ich denn unter C einen variablen Dateinamen erzeugen? Ich möchte dass jedes mal eine neue Datei erzeugt wird, die das aktuelle Dateum und die aktuelle Uhrzeit im Namen trägt (z.B. 2006-10-18_14:37:58.txt). Diese Datei sollte unter Windows angelegt werden und wird mit Hilfe von (MySQL) SELECT INTO OUTFILE erzeugt. Wie ich das mit SQL mache ist mir klar, auch wie ich den Pfad angebe, aber ich weiß nicht genau wie ich die Datei immer neu benennen soll. Ich hab folgendes:

Code:
char sqlBefehl[SQL_SIZE];
const char *pfad = "C:/Pfad/zu/meiner/Datei/Name.txt"

sprintf(sqlBefehl, "SELECT * INTO OUTFILE '%s' FIELDS TERMINATED BY '\t' LINES
TERMINATED BY '\n'", pfad);
/*SQL ausführen*/

Ich hoffe ihr könnt mir nen Denkanstoß geben.
 
Hallo!

Ja danke! Das mit der time.h hab ich gewußt, sorry für die wenigen Infos von mir. Also ich hab jetzt folgendes mal gemacht:

Code:
struct tm *tmnow;
struct tm *uhr;
const char *path;
char pfad[1024];
char string1[80];
char string2[80];
time_t tnow;
time_t sekunde;

time(&tnow);
time(&sekunde);
tmnow = localtime(&tnow);
uhr = localtime(&sekunde);
strftime(string1, 80, "%X_", uhr);
strftime(string2, 80, "%x.txt", tmnow);

path = "C:/Irmonitor/Logfiles/WLAN/";
strcat(pfad, path);
strcat(pfad, string1);
strcat(pfad, string2);

sprintf(sql, "SELECT * INTO OUTFILE '%s' FIELDS TERMINATED BY '\t' LINES 
TERMINATED BY '\n' FROM tabelle", pfad);
/* SQL ausführen */

Leider gibt es dann einen Fehler (Errcode: 22). Er kann die Datei nicht erstellen, oder in sie schreiben! Ich versuche von Linux aus eine Datei in Windows zu erstellen (Windows Server 2003). Was mach ich denn falsch? Habt ihr da ne Ahnung?
 
Hast Du die Windowspartition tatsächlich nach "C:/Irmonitor/Logfiles/WLAN/" gemounted?

Bevor jetzt eine Antwort kommt: Denk bitte genau nach und/oder informier Dich.

Folgende Überlegungen sind wichtig:
Wo liegt der Mountpoint der Partition? Wohin schreibe ich? Habe ich schreibrechte aktiviert? *Will* ich *wirklich* auf NTFS schreiben?
 
Hallo!


Ja das ist sicher der Fall. Wenn ich folgendes ausführe:

Code:
SELECT * INTO OUTFILE 'C:/Irmonitor/Logfiles/WLAN/name.txt' FIELDS TERMINATED BY '\t' LINES 
TERMINATED BY '\n' FROM tabelle"

Dann macht er es ja auch. Nur wenn ich den Pfad erstelle und ihn mit strcat() zusammenfüge, damit ich das aktuelle Datum mit Uhrzeit habe, dann kommt dieser Fehler!
 
Das SQL-Statement wird in meinem Programm auf einer Linuxmaschine ausgeführt. Das ganze Programm greift auf die Datenbank bei dem Win2003 Server zu.
 
Zurück