Recupérer le nom d'un fichier

gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006 - 1 juin 2006 à 15:30
excrt Messages postés 75 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 3 juillet 2006 - 1 juin 2006 à 18:15
Salut le monde!

J'ai un piti problème pas méchant mais qui me bloque:
je voudrais ouvrir un fichier dont je ne connais pas le nom (il change régulièrement).
En gros, je voudrais faire:
 
fichier=fopen(NomFichier,"r");

Mais je ne sais pas comment attribuer à ma variable NomFichier le nom du fichier (si possible sans l'extention).
Si quelqu'un sait faire ça (je n'en doute pas), il me rendrait un fier service en m'indiquant la marche à suivre.

Merci d'avance.
Tchao.

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 juin 2006 à 15:36
Mais le nom de fichier, il faut bien que tu le connaisse à un moment donné
A partir de quoi le connais-tu?
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
1 juin 2006 à 15:41
bizard le probleme

si j ai bien compris tu veu pas marque en dur le nom du fichier parqu il change ba dans ce cas stok le dans un char  *

et donner ton char * a open ou fopen
0
gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006
1 juin 2006 à 16:03
Ben justement je ne le connais pas le nom ce p... de fichier. En fait, c'est un fichier qui est déposé dans un dossier partagé par une "tierce personne". Tout ce que je sais, c'est qu'il est de la forme "DM0001.ok", et qu'il s'incrémente...(DM0002, DM0003...).
Voila, j'espère que c'est un peu plus clair.
En tous cas merci de vous intéresser au problème...
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
1 juin 2006 à 16:53
oki alors si tu est sur linux pour retrouver le nom de ton fichier tu
fait un open de ton repertoire et la tu aura la mm chose que si tu fait
ls -l donc a toi de retrouver le nom du fichier que tu veu le numero le
plus haut ou le plus bas ...


 apres sur windo je donne ma langue au chat ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gilds5 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 13 juin 2006
1 juin 2006 à 17:20
Ben alors, bon apétit le chat!
Merci quand même, l'idée est bonne, je vais essayer de creuser de ce coté là...
0
excrt Messages postés 75 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 3 juillet 2006
1 juin 2006 à 18:15
petit exemple vite fait pour Windows:

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

int main()
{
    unsigned long uNumber;
    unsigned long uMax = 0;
    char szBuffer[MAX_PATH + 1];
    // "c:\\dm*.ok" << avec l'astérix, il va trouver des fichiers du genre:
    // « dm0001234.ok », avec plus de 4 caractères après « dm »
    const char* szFilter = "c:\\dm????.ok"; // strictement 4 caractères, pas 2 ni 23 ni 5 mais 4
    HANDLE hFind;
    WIN32_FIND_DATAA win32FindData;

    if ((hFind = FindFirstFileA(szFilter, &win32FindData)) != INVALID_HANDLE_VALUE)
    {
        do
        {
            if (!(win32FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
            {
                // +2 pour passer après les lettres « DM »
                uNumber = strtoul(win32FindData.cFileName + 2, NULL, 10);

                if (uNumber > uMax) {
                    uMax = uNumber;
                }
            }
        }
        while (FindNextFileA(hFind, &win32FindData) != FALSE);

        FindClose(hFind);
    }
    // %.4 << assure d'avoir au moins 4 chiffres, des zéros sont placés à gauche pour compléter si besoin
    _snprintf(szBuffer, MAX_PATH, "c:\\dm%.4lu.ok", uMax); // contient le nom du fichier le plus récent
    puts(szBuffer); // on l'affiche(pour l'exemple)

    // ...
    // ...
    // ...

    return 0;
}

-=-= ExCRT =-=-
0
Rejoignez-nous