C File-Umbenennung mit argc argv

Dr-Rossi-46

Lt. Junior Grade
Registriert
Dez. 2009
Beiträge
386
Hallo zusammen :)
Aktuell beschäftige ich mich etwas mit C und bin gerade bei den Basics und hab eine Frage auf die ich keine Antwort habe. Hoffe, dass mir jemand bei meinem kleinen Problem helfen kann?

Folgendes: ich habe eine Funktion geschrieben, wo ich eine .txt Datei erstelle habe( händisch eingegeben zbsp: File= fopen("hallo.txt", "w").
Außerhalb der Funktion möchte ich in der Main den Filenamen durch argc, argv umbennen. Wie ist das möglich? Selbst wenn ich die die Datei in einem String speichere, dann bleibt sie ja lokal und kann sie nicht durch die rename Funktion umändern. Hab ich hier ein Denkfehler?

Danke schon mal :)

EDIT: Sorry, wurde im falschen Unterforum gepostet, shame on me. Bitte um Verschiebung! Danke :)
 
Öffnen und lesen bzw. öffnen und schreiben hat nun mal nichts mit Umbenennen zu tun. Entweder eine neue Datei erstellen und dort den gelesenen Inhalt reinschreiben, die alte Datei anschließend löschen, oder besser ganz banal die dafür vorgesehene Funktion "rename" aus stdio.h verwenden: rename

Guckstu auch hier: How to rename a file in C?
 
  • Gefällt mir
Reaktionen: Schlumpfbert
Dr-Rossi-46 schrieb:
Folgendes: ich habe eine Funktion geschrieben, wo ich eine .txt Datei erstelle habe( händisch eingegeben zbsp: File= fopen("hallo.txt", "w"). Außerhalb der Funktion möchte ich in der Main den Filenamen durch argc, argv umbennen. Wie ist das möglich? Selbst wenn ich die die Datei in einem String speichere, dann bleibt sie ja lokal und kann sie nicht durch die rename Funktion umändern. Hab ich hier ein Denkfehler?
Ehrlich gesagt verstehe ich nicht völlig was Du hier meinst. Es könnte sich um ein simples rename handeln, wie von @Raijin angemerkt - oder es könnte auch um das "Abfragen" des neuen Dateinamens aus den Kommandozeilenparametern gehen. Also einfach sowas hier:
C:
#include <stdio.h>

 int funktion(const char* fname)
{
 FILE* fh = fopen(fname, "w");
 fprintf(fh, "fopen(\"%s\", \"w\");", fname);
 fclose(fh);
 
 return 0;
}

 int main(int argc, char* argv[])
{
 char* fn = "hallo.txt";
 if(argc > 1) {
    fn = argv[1];
 }
 funktion(fn);
 
 return 0;   
}
Du müsstest möglicherweise Genaueres dazu verraten.
 
Ich kann auch nur raten.
Evtl sowas?
Du hast schon ne Datei erstellt und auch gefüllt. Allerdings gefällt dir zB später der Name nicht mehr.
Hier würde ich empfehlen die Datei correct mit close() oder flush() oder so zu schließen und das schreiben erstmal zu beenden. Danach korrekt umbenennen und (falls gewünscht) erneut öffnen.
Bestimmt kann man noch irgendwie die alte Cursor-Position speichern, sofern du nicht eh nur nacheinander wegschreibst und dann also beim erneuten Öffnen einfach nur wieder ans Ende springen musst.
 

Ähnliche Themen

Antworten
8
Aufrufe
2.102
Antworten
14
Aufrufe
7.000
1668mib
1
Zurück
Oben