IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Gérer une liste -Segmentation Fault


Sujet :

C

  1. #1
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut Gérer une liste -Segmentation Fault
    Bonjour à tous,

    je me décide à poster pour ce nouveau problème que je n'arrive pas à régler. Il s'agit en fait de créer une liste d'employé et d'écrire celle-ci dans un fichier. On retrouve les fonctions classiques : Ajouter, Supprimer, Modifier, Sauvegarder, Afficher. J'ai néanmoins un problème d'exécution lors de l'encodage du prénom.

    Les codes sont ci-joints.

    Merci à vous.

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    J'ai juste jeté un coup d'oeil rapide, mais il y a surtout un micmac dans les pointeurs.

    Pour commencer, il y a plusieurs warnings :

    C:\download\employeMain.c||In function `main'
    C:\download\employeMain.c|50|warning: passing arg 1 of `ajouterEmploye' from incompatible pointer type|
    C:\download\employeMain.c|65|warning: passing arg 1 of `synchroFileStruct' from incompatible pointer type|
    C:\download\employeMain.c|77|warning: passing arg 1 of `ajouterEmploye' from incompatible pointer type|
    C:\download\employeMain.c|81|warning: passing arg 1 of `supprimerEmploye' from incompatible pointer type|
    C:\download\employeMain.c|85|warning: passing arg 1 of `sauvegarderListe' from incompatible pointer type|
    C:\download\employeMain.c|90|warning: passing arg 1 of `modifierEmploye' from incompatible pointer type|
    C:\download\employeMain.c|15|warning: unused parameter 'argc'|
    C:\download\employeMain.c|15|warning: unused parameter 'argv'|
    ||=== Build finished: 0 errors, 8 warnings ===|
    qui indiquent que différentes fonctions attendent un tEmploye* mais tu leur passe un tEmploye**.

    Tu as également un problème dans la fonction allocStruct(). Dans celle-ci, tu modifies le paramètre s_Employe qui est passé par valeur, le changement n'est pas répercuté à l'appelant donc tu vas perdre l'adresse de la mémoire allouée et surtout utiliser un pointeur NULL.

    A côté de ça :
    • Il manque beaucoup de vérification des valeurs de retours (fopen, fscanf, etc.).
    • Il y a des risques de débordement de buffer (fscanf(... %s ...)).
    • Pas mal de code inutile (caractere[0] = 0; avant le fgets, libération du pointeur dont l'allocation vient d'échouer, etc.).
    • De construction inutilement complexe, peu maintenanble (fgets(caractere,10,fNB) ou peu réutilisable (exit dans le corps d'une fonction).

  3. #3
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Merci grâce à toi j'ai pu trouver mon erreur
    En tout cas, bravo pour les explications, nettes, précises et surtout bien structurées

    Bye bye.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Iteration sur une liste ==> segmentation fault
    Par StingerBell dans le forum C++
    Réponses: 16
    Dernier message: 19/06/2014, 14h28
  2. Gérer une liste de listes
    Par Victoria007 dans le forum Général Python
    Réponses: 10
    Dernier message: 04/05/2008, 10h09
  3. gérer une liste/sélectionner des lignes /cocher des checkbox
    Par lauben dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 13/09/2007, 09h41
  4. [VB.net] Comment gérer une liste de threads ?
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/12/2006, 12h42
  5. Gérer une liste de diffusions
    Par oldos dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 07/06/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo