Gestion des fichiers en C

Fermé
dreams moon - 8 avril 2012 à 15:15
 dreams moon - 26 avril 2012 à 11:20
Bonjour,

je suis en train de programmer une petite application en C " un filtre de répertoire téléphonique".Mon répertoire est un ensemble de fichiers de structure Personne.une personne est identifieé par (nom,num_téléphone,adresse,date_naissance,mail).
Donc j'ai diviser mon programme en fonctions : fonctions de filtrage(contrôle sur le numero,l'@mail et la date de naissance),fonction Affiche qui me permet d'afficher un fichier de mon répertoire et la derniére fonction c'est fonction cherche_ Event : elle consiste à:
- récuperer la date d'aujoud'hui (date system).
-la comparer par la date de naissance de chaque personne de mon répertoire.
-si c'est ok ,récupérer le nom de la personne correspondante.
-Mettre le résultat dans un ficher Fich_anniv qui va contenir les noms de toutes les personnes dont leurs anniversaires correspond à la semaine en cours .
-Afficher le fichier résultat.

Le processus est clair mais le problème c'est que je ne sais pas comment le faire réelement par exemple comment peut-on ouvrir un fichier depuis son chemin puis comment passer au fichier suivante,et ainsi de suite ,le fait de parcourir tous les fichiers de mon rep c'est absolument flou pour moi.
Merci d'avance pour votre réponse. ;-)
A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
8 avril 2012 à 18:27
Bonjour,
Il n'y a pas de fonctions C standard pour lister un répertoire/les fichiers dans un dossier. Ça peut être fait en utilisant l'api sous windows exemple :
#include <stdio.h>
#include <windows.h>

int main(void){
    HANDLE hfind;
    WIN32_FIND_DATA wfd;
    SetCurrentDirectory("c:\\");
    hfind=FindFirstFile("*",&wfd);
    if(hfind!=INVALID_HANDLE_VALUE){
        while(FindNextFile(hfind,&wfd)){
            printf("%x\t%s\n",wfd.dwFileAttributes,wfd.cFileName);
        }
    }
    return 0;
}

Il y a aussi l'header dirent.h (POSIX) qui fonctionne sous linux évidemment mais aussi sous windows si vous utilisez gcc. https://en.wikipedia.org/wiki/Dirent.h
exemple :
#include <stdio.h>
#include <dirent.h>

int main(void){
    DIR *d;
    struct dirent *sd;
    d=opendir("c:\\");
    if(d){
        while((sd=readdir(d))){
            printf("%s\n",sd->d_name);
        }
        closedir(d);
    }
    return 0;
}
0
merciiiii :))
0