Hallo, ich möchter in meinem C Programm eine Datei öffnen, was soweit auch kein Thema ist. Das Problem ist aber, dass sich der Name dieser Datei ändert und ich ihn nicht kenne. Ich weiss aber - es handelt sich immer um eine .txt - in diesem Ordner gibt es nur eine .txt - ich kenne die Ordnerstruktur, die auch immer identisch ist. Gibt es einen Weg, diese Datei mit unbekanntem Namen zu öffnen? Gruß Christian
Christian schrieb: > Gibt es einen Weg, diese Datei mit unbekanntem Namen zu öffnen? einfach vorher eine Dir-Listung machen? (das was auch dir macht)
Peter II schrieb: > Christian schrieb: >> Gibt es einen Weg, diese Datei mit unbekanntem Namen zu öffnen? > > einfach vorher eine Dir-Listung machen? (das was auch dir macht) Die entsprechende Funktion heißt "findfirst", wenn nur eine Datei gesucht werden soll. mfG vom ingo
Entweder wie von Peter II beschrieben per API-Aufruf, oder die Billigmethode system("dir *.txt /b >datei.txt") und dann datei.txt auslesen. Nicht schön aber selten.
Vielen Dank schon einmal. Das mit dem Dir-Listing sagt mir gerade wenig aber darüber wird sich bestimmt einiges finden lassen. Ist sowas mit einer Skriptsprache wie Python einfacher zu händeln? Würd mich gern mal mit dieser Sprache auseinander setzen und vielleicht wäre das damit einfacher?
In C# geht:
1 | string[] test = Directory.GetFiles(Path.GetTempPath(),"*.txt",SearchOption.AllDirectories); |
Für Cpp hier schauen und anwenden: http://msdn.microsoft.com/de-de/library/d3eayw32%28v=vs.100%29.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2
Wie gesagt es handelt sich um ein C-Programm aber ein Python Skript wäre auch noch ok
Christian schrieb: > Ist sowas mit einer Skriptsprache wie Python einfacher zu händeln? Würd > mich gern mal mit dieser Sprache auseinander setzen und vielleicht wäre > das damit einfacher? Ist mit Python kein Thema und in weniger als 5 Zeilen Code erledigt.
import os dirlist=os.listdir('/home/robert/Dokumente/') for name in dirlist: if '.txt' in name: print name
Karl schrieb: > Ist mit Python kein Thema und in weniger als 5 Zeilen Code erledigt. Auch über ein Dir-Listing oder welches Stichwort würde mir da in Python helfen?
Christian schrieb: > Karl schrieb: >> Ist mit Python kein Thema und in weniger als 5 Zeilen Code erledigt. > > Auch über ein Dir-Listing oder welches Stichwort würde mir da in Python > helfen? Das da zum Beispiel: http://docs.python.org/3/library/glob.html So kannst du z.B. das gewünschte File ausgeben:
1 | import glob |
2 | import fileinput |
3 | filenames = glob.glob('*.txt') |
4 | for line in fileinput.input(filenames[0]): |
5 | print(line) |
Errorhandling und derlei darf der geneigte Leser selbst hinzufügen.
Christian schrieb: > Wie gesagt es handelt sich um ein C-Programm aber ein Python Skript wäre > auch noch ok Dann hier ein (getestetes) Beispiel in c: //// #include <stdio.h> #include <dir.h> int main(void) { struct _finddata_t f; FILE *datei; char st1[200]; if(_findfirst("*.txt",&f)) { printf("versuche %s zu oeffnen.\n",f.name); datei=fopen(f.name,"r"); fgets(st1,190,datei); printf(st1); /* ... */ fclose(datei); } return 0; } //// mfG vom ingo
Wie man am vorangestellten Unterstrich der Funktion _findfirst erkennen kann, ist das keine Funktion der C-Standard-Library und somit nicht für jeden C-Compiler verfügbar, geschweige denn für jedes Betriebssystem.
Du hast nicht geschrieben, um was für ein Betriebssystem es geht. Wenns ein Unix ist könntest du auch einfach *.txt von der shell expandieren lassen.
dochgast schrieb: > Entweder wie von Peter II beschrieben per API-Aufruf, oder die > Billigmethode system("dir *.txt /b >datei.txt") und dann datei.txt > auslesen. Nicht schön aber selten. Lass bloß den Scheiß!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.