begin process at 2012 05 29 16:24:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

[C] pourquoi un problème de segmentation du fichier ? je connais ma faute mais comment faire ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C] pourquoi un problème de segmentation du fichier ? je connais ma faute mais comment faire ?

lundi 8 juin 2009 à 06:18:44 | [C] pourquoi un problème de segmentation du fichier ? je connais ma faute mais comment faire ?

evenkil

Bonjour à tous

Mon programma compile très bien, mais à l'execution il me dit que j'ai un problème de Segmentation.

L'objectif du programme est :
- lister tous les fichier d'un répertoire
- afficher à l'écran les fichiers
- effacer les fichiers

Voici le résultat obtenu à l'exécution :

-------------------
On s'occupe du fichier blabla.txt
Erreur de segmentation
---------------------

Merci pour votre aide


#include <stdio.h>
#include <dirent.h>
 
int main(void){
    DIR * rep = opendir("./dirB/");//on spécifie qu'on veut travailler dans le répertoire dirB
    int c;
    FILE * fichier;// il s'aggit du fichier qu'on va manipuler à l'impression
        struct dirent * ent;
    while(1){
        //si le répertoire "dirB" existe
        if (rep != NULL){
            while ((ent = readdir(rep)) != NULL){
            //ON ENTRE DANS LA PARTIE DU FICHIER
                printf("On s'occupe du fichier %s\n", ent->d_name);
                fichier = fopen(ent->d_name, "rb");//on ouvre le fichier en lecture seule
                fseek(fichier, 0L, SEEK_SET);// On se place au début du fichier
                // Tant qu'on ne rencontre pas la fin du fichier, on lit un caractère...
                while ((c = getc(fichier)) != EOF){  // ou encore   while (!feof(fichier))
                    printf("%c", c);// Que l'on affiche à l'écran
                }
                fclose(fichier);//on ferme le fichier
                remove(ent->d_name);//on supprime le fichier
            //ON TERMINER LE MANIPULER LE FICHIER
            //GRACE AU WHILE ON PASSE AU FICHIER SUIVANT                
            }
        
        }
    }
    closedir(rep);
         return 0;
}
lundi 8 juin 2009 à 10:36:53 | Re : [C] pourquoi un problème de segmentation du fichier ? je connais ma faute mais comment faire ?

TychoBrahe

Réponse acceptée !
Salut,

Plusieurs remarques :
 - Je me demande bien a quoi sert ton while(1) a part partir en boucle infinie et ainsi je jamais terminer normalement ton programme.
 - Tu devrais fermer le répertoire uniquement s'il existe et donc a la fin de ton test sur la nullité de rep et non après (en plsu c'est après la boucle infinie donc ça ne sera jamais atteint).
 - L'option b du fopen ne te sert a rien ici et est d'ailleur contradictoire avec ta manière de coder. Utiliser l'option r seule ouvre le fichier en lecture et positionne le pointeur au début de fichier, c'est tout ce dont tu as besoin.
 - Ton fseek ne sert strictement a rien vu qu'on est déjà au début du fichier.
 - Il faut TOUJOURS tester le retour d'un appel systèmes et des fonctions de plus haut niveau les simplifiant.
 - Lire et afficher un fichier caractère par caractère c'est plutôt moche est très long, ça te fait effectuer plein d'appels système (heureusement que le buffer limite la casse). Utilise donc fgets avec un plus gros buffer.

Ton segfault vient du fait que tu n'as pas testé le retour de fopen. En effet, tu aurais du le remarquer au premeir regard, tu essaye d'ouvrir le fichier blabla.txt, sauf qu'il n'existe pas. Et oui, il ne se trouve pas dans le répertoire d'exécution du programme mais dans un sous dossier (celui que tu as ouvert). Tu dois donc concaténer le nom de ton répertoire avec le nom du fichier afin d'obtenir le chemin relatif vers le fichier a manipuler.

dimanche 14 juin 2009 à 13:19:52 | Re : [C] pourquoi un problème de segmentation du fichier ? je connais ma faute mais comment faire ?

evenkil

parfait, je te remerci pour tes conseils, ca marche super bien


Cette discussion est classée dans : fichier, while, rep, segmentation, ent


Répondre à ce message

Sujets en rapport avec ce message

Fichier INI [ par Xs ] voila, j'utilise la fonction API WritePrivateProfileSetting(....)mais il se trouve que le fichier ini est crée dans le repertoire windows. moi, je veu segmentation d'un fichier pour utilisation dans une base de données [ par matthieugregoire ] Bonjour à tous!voilà je vous expode mon problème: je dois traiter un fichier texte pour le rendre utilisable par une base de donnée. Pour cela à chaqu programmation système C:Ya du boulot!!! [ par samder76 ] Dans le cadre scolaire, je dois créer un système de fichier où:-la gestion des fichier se fera se fera par l'intermédiaire d'un fichier unix dans lequ help fonction recursive [ par gege1024 ] qq'un peut-il me venir en aide pour rendre ma source recursive aux sous-repertoire, c'est a dire que je veux relancer le traitement findfirstfile sur Lire en mode append [ par bethany ] J'ouvre avec fopen un fichier csv (se lit avec excel).Je le met en mode 'append' afin d'ajouter a la fin de nouvelles données.Le truc c'est qu'il se p problem avec scanf et fwrite dans boucle while [ par kamal93270 ] bonjour voici mon programme : #include #include int main() { int choix; FILE* fichier; while (1) { scanf("%d", A quoi sa correspond ? [ par Ilsundal ] Bonjour, alors voici mon petit probleme, j'arrive pas a trouver a quoi correspond le "!" qui se trouve juste avant foef(fichier) dans la condition du Lecture d'un fichier txt [ par Darklecon ] Chers amis de la troisième lettre de l'alphabet bonjour, J'ai écrit une petite fonction, copy_rep, permettant de copier un répertoire temp vers un remplissage d'une variable depuis les données d'un fichier [ par sergioramos04 ] slt à tous, j'ai un fichier dont le contenu est: Granda Av paco siro Quartier vicenté Espagne 0675 35 62 32 45 PALMIRA n 35 AV angletter Espagne 05 Fichier de structures [ par boninou ] Bonjour,Voila mon petit souci : J'ai un fichier de structures qui contient des structures Candidat :struct Candidat{    char prenom[25];    char nom[2


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales