2009-08-25 4 views
1

Voudrait fopen() le dernier fichier dans un répertoire
(avec système de dénomination file1.txt, file2.txt, file3.txt, etc.)
Y at-il une fonction API Visual Studio pour cela?
Si ce n'est pas le cas, est-ce une bonne idée de lire tous les noms de fichiers .txt et de trier pour obtenir celui dont j'ai besoin? Y at-il un meilleur algorithme que je pourrais être pointé?Trouver tous les nom de fichier dans C

Merci.

+2

Voulez-vous dire plus tard comme dans le temps de création/modification ou celui avec le nombre maximum dans la gamme de 'fichier [0-9] + \. Txt'? – LiraNuna

+0

nombre maximum sera probablement le meilleur. Je voudrais lire dans le dernier fichier journal dans le répertoire .... –

Répondre

1

Je vais supposer par "le plus récent" que vous voulez dire "le dernier fichier modifié."

Il existe une fonction de bibliothèque d'exécution C _fstat and _fstati64 (pour les fichiers volumineux> 4 Go). La signature de fonction pour _fstat est:

int _fstat(int file_handle, struct _stat *file_info); 

La structure _stat a un peu d'informations utiles sur le fichier, mais vous voulez probablement le membre st_mtime, qui a la dernière fois modifié comme time_t (temps en secondes depuis 00 : 00: 00 UTC, 1er janvier 1970). Il peut être utile d'utiliser les fonctions win32 FindFirstFile() and FindNextFile() pour parcourir le répertoire, stocker les fichiers dans un tableau d'une structure (contenant le nom du fichier modifié), puis appeler le qsort_s() sur le tableau, en triant par ordre décroissant .

J'espère que cela aide.

+0

Merci Edmond. Mes fichiers ne sont PAS> 4GB Y at-il encore un avantage à utiliser fstat, si possible? Si possible, je aurais encore besoin de stocker dans une structure de tableau et trier, corriger? On dirait que je devrais utiliser la route FindXFile et trier. –

+0

Je ne peux pas penser à un avantage que _fstat offre sur la version 64 bits, à l'exception de la taille légèrement plus petite de la structure statistique, qui ne semble pas valoir grand-chose. Oui, vous devrez stocker et trier les valeurs dans un tableau. Si vous utilisez C++, vous pouvez opter pour un vecteur STL, ce qui serait plus facile. –

+0

Ok. Vous rencontrez des problèmes avec FindNextFile: http://stackoverflow.com/questions/1336426/findfirstfile-and-findnextfile-question –