Forum: PC-Programmierung Datei mit unbekanntem Namen öffnen


von Christian (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

Christian schrieb:
> Gibt es einen Weg, diese Datei mit unbekanntem Namen zu öffnen?

einfach vorher eine Dir-Listung machen? (das was auch dir macht)

von ingo (Gast)


Lesenswert?

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

von dochgast (Gast)


Lesenswert?

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.

von Christian (Gast)


Lesenswert?

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?

von Tachen (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

Wie gesagt es handelt sich um ein C-Programm aber ein Python Skript wäre 
auch noch ok

von Karl (Gast)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

import os

dirlist=os.listdir('/home/robert/Dokumente/')
for name in dirlist:
    if '.txt' in name:
        print name

von Christian (Gast)


Lesenswert?

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?

von file (Gast)


Lesenswert?


von Rolf M. (rmagnus)


Lesenswert?

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.

von ingo (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

ingo schrieb:
> Dann hier ein (getestetes) Beispiel in c:

bitte noch findclose vergessen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Sebastian S. (sebastians)


Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.