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 :

pb avec un programme de manipulation des fichiers


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut pb avec un programme de manipulation des fichiers
    j'ai programi quelque procédé de manipulation d fille dynamique et j'ai pas trouver solution d'une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <stdio.h>
    #include <stdlib.h>
     
     
     
    typedef struct file
    {
        int val;
        int pri;
        struct files *suiv;
    } file;
    typedef struct file *files;
    files te;
    files qe;
     
     
    void init (files *te)
    {
     
       te=NULL;
       qe=NULL;
    }
     
     
     
    void enfile(files *te, int *va, int *pr)
    {
        files p = (file *) malloc(sizeof(file));
        p->val = *va;
        p->pri = *pr;
        if(te==NULL) {
                     *te=p;
                     qe=p;
                     }
                    else {
                         qe->suiv=p;
                         qe=p;
                         }
    free(p);
    }
     
    void defiler(files *te, int *va, int *pr)
    {
        files p=*te;
        *te=p->suiv;
        *va =p->val;
        *pr =p->pri;
         free(p);
    }
     
    void affich (files *te)
    {
        files p = *te;
        while (p != NULL)
        {
            printf("la valeur: %d,sa priority: %d", p->val, p->pri);
            p = p->suiv;
     
        }
    }
     
     
     
     
     
    int main(void)
    {
        int va;
        int pr;
        init (&te);
        printf("la valeur: ");
        scanf("%d",&va);
        printf("sa priorite: ");
        scanf("%d",&pr);
        enfile(&te, &va, &pr);
        if(te!=NULL)
        affich(te);
     
    }

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Salut,

    Je n'ai pas encore regardé le code, mais si tu commençais par nous décrire l'erreur que tu as constatée? A la compilation? A l'exécution? gcc me donne:

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    test.c: In function 'init':
    test.c:17:19: warning: parameter 'te' set but not used [-Wunused-but-set-parame
    er]
    test.c: In function 'enfile':
    test.c:36:30: warning: assignment from incompatible pointer type [enabled by de
    ault]
    test.c: In function 'defiler':
    test.c:45:8: warning: assignment from incompatible pointer type [enabled by def
    ult]
    test.c: In function 'affich':
    test.c:57:11: warning: assignment from incompatible pointer type [enabled by de
    ault]
    test.c: In function 'main':
    test.c:77:5: warning: passing argument 1 of 'affich' from incompatible pointer
    ype [enabled by default]
    test.c:51:6: note: expected 'struct file **' but argument is of type 'files'
    test.c:79:1: warning: control reaches end of non-void function [-Wreturn-type]

    Avec mes meilleures salutations

    Thierry

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    j'ai modifié un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    #include <stdio.h>
    #include <alloc.h>
    #include <stdlib.h>
     
    typedef struct file
    {
        int val;
        int pri;
        struct files *suiv;
    } file;
    typedef struct file *files;
    files te;
    files qe;
     
     
    void init (files *te)
    {
     
       te=NULL;
       qe=NULL;
    }
     
     
     
    void enfile(files *te, int *va, int *pr)
    {
        files p = (file *) malloc(sizeof(file));
        p->val = *va;
        p->pri = *pr;
        if(te==NULL) {
                     *te=p;
                     qe=p;
                     }
                    else {
                         qe->suiv=p;
                         qe=p;
                         }
    free(p);
    }
     
    void defiler(files *te, int *va, int *pr)
    {
        files p=*te;
        *te=p->suiv;
        *va =p->val;
        *pr =p->pri;
         free(p);
    }
     
    void affich (files te)
    {
        files p = te;
        while (p != NULL)
        {
            printf("la valeur: %d,sa priority: %d", p->val, p->pri);
            p = p->suiv;
     
        }
    }
     
     
     
     
     
    int main(void)
    {
        int va;
        int pr;
        init (&te);
        printf("la valeur: ");
        scanf("%d",&va);
        getchar();
        printf("sa priorite: ");
        scanf("%d",&pr);
        enfile(&te, &va, &pr);
        if(te!=NULL)
        affich(te);
     
    }

    et pour les erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    F:\file_tp.c|2|error: alloc.h: No such file or directory|
    F:\file_tp.c||In function 'enfile':|
    F:\file_tp.c|35|warning: assignment from incompatible pointer type|
    F:\file_tp.c||In function 'defiler':|
    F:\file_tp.c|44|warning: assignment from incompatible pointer type|
    F:\file_tp.c||In function 'affich':|
    F:\file_tp.c|56|warning: assignment from incompatible pointer type|
    ||=== Build finished: 1 errors, 3 warnings ===|

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    Tu as une seule erreur : ton fichier alloc.h n'est pas trouvé. Existe t-il ? Dans quel dossier est-il ?

    Les autres messages ne sont "que" des warnings. Ce ne sont pas des erreurs mais si tu observes un comportement bizarre de ton programme, tu as déjà la piste number one Vérifie les types des variables et les opérateurs utilisés.

    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct file
    {
        int val;
        int pri;
        struct files *suiv;
    } file;
    typedef struct file *files;
    C'est pas un peu vicieux ça ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 055
    Points
    33 055
    Billets dans le blog
    4
    Par défaut
    C'est pas impossible d'utiliser un alias avant de l'avoir déclaré ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci bien les amis
    mais j'ai un problème au niveau du temps d'exécution… calim2:

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 055
    Points
    33 055
    Billets dans le blog
    4
    Par défaut
    Je pense que tu as un tout autre problème bien plus grave
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void enfile(files *te, int *va, int *pr)
    {
        files p = (file *) malloc(sizeof(file));
        p->val = *va;
        p->pri = *pr;
        if(te==NULL) {
                     *te=p;
                     qe=p;
                     }
                    else {
                         qe->suiv=p;
                         qe=p;
                         }
    free(p);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void defiler(files *te, int *va, int *pr)
    {
        files p=*te;
        *te=p->suiv;
        *va =p->val;
        *pr =p->pri;
         free(p);
    }
    que je nommerais "le free au petit bonheur la chance".
    Revois bien l'utilisation de malloc et free et réfléchis à où les mettre selon ce que tu souhaites faire avec ton programme.
    Parce que là, à mon avis, ça va juste violemment crasher.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    oui mon pb avec les pnt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct element_file
    {
        int val;
        int pri;
        struct element_file *suiv;
    } file;
    typedef file *files;
     
     
    void init (files *te,files *qe)
    {
       *te=NULL;
       *qe=NULL;
    }
     
     
    void enfile(files *te, files *qe, int va, int pr,int taille)
    {
        file *p = (file*) malloc(sizeof(file));
        p->val = va;
        p->pri = pr;
        if(*te == NULL) {
                        *te = p;
                        *qe = p;
                        }
                   else {
                        files p1=*qe;
                        p1->suiv=p;
                        p1=p;
                        *qe=p1;
                        free(p1);
                        }
    free(p);
    taille++;
    }
     
    void defiler(files *te, int *va, int *pr)
    {
        files p=*te;
        *te=p->suiv;
        *va =p->val;
        *pr =p->pri;
         free(p);
    }
     
    void affich (files *te)
    {
        files p = *te;
        while (p != NULL)
        {
            printf("la valeur: %d,sa priority: %d", &p->val, &p->pri);
            p = p->suiv;
            getchar();
     
        }
    }
     
     
     
     
     
    int main(void)
    {
        int va,pr,taille,i=0;
        files te,qe;
        init (&te,&qe);
        for(i=1;i<6;i++)
        {
        printf("la valeur: ");
        scanf("%d",&va);
        printf("sa priorite: ");
        scanf("%d",&pr);
        }
        /*enfile(&te,&qe, &va, &pr);
        if(te!=NULL)*/
        affich(&te);
     
    }
    et pour les erreur y pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Compiling: K:\file_tp.c
    Linking console executable: K:\file_tp.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 0 warnings
     
    Checking for existence: K:\file_tp.exe
    Executing: C:\Program Files\CodeBlocks/cb_console_runner.exe "K:\file_tp.exe" (in K:\)
    Process terminated with status -1073741510 (0 minutes, 49 seconds)
    mais lorsque je excite oups

  9. #9
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    Dans ta fonction main qui à un type de retour int, tu n'as pas de return EXIT_SUCCESS par exemple, c'est pour ça que dans codeblocks, le compilateur retourne n'importe quoi.

    Et d'ailleurs, je crois que tu ne libères jamais la mémoire que tu as alloué à ton/tes pointeurs.


    Cordialement,

Discussions similaires

  1. Programmation pour manipuler des fichiers XML
    Par anolo40 dans le forum Débuter
    Réponses: 8
    Dernier message: 09/08/2011, 22h29
  2. Manipuler des fichiers xls avec c++
    Par 151085 dans le forum Visual C++
    Réponses: 2
    Dernier message: 27/08/2007, 15h18
  3. manipulation des fichiers et dossiers avec VBA excel
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2007, 23h30
  4. Manipulation des fichiers avec pl/sql
    Par Answerplease dans le forum PL/SQL
    Réponses: 1
    Dernier message: 10/07/2007, 11h53
  5. Manipulation des fichiers avec fstream.
    Par Pragmateek dans le forum SL & STL
    Réponses: 4
    Dernier message: 04/04/2006, 13h12

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