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.
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...
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 ...
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)