Recupérer le nom d'un fichier

Signaler
Messages postés
19
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
13 juin 2006
-
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2006
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Mais le nom de fichier, il faut bien que tu le connaisse à un moment donné
A partir de quoi le connais-tu?
Messages postés
56
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
11 juillet 2006

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
Messages postés
19
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
13 juin 2006

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...
Messages postés
56
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
11 juillet 2006

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 ...
Messages postés
19
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
13 juin 2006

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à...
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2006

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 =-=-