C: je ne comprends pas mon erreur (fichier.h)
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 39

C: je ne comprends pas mon erreur (fichier.h)



  1. #1
    invite40f82214

    C: je ne comprends pas mon erreur (fichier.h)


    ------

    Bonjour tous le monde,

    J'ai fait un petit programme de test et je ne sais pas pourquoi ca marche pas. le probleme est à la ligne:

    resultat = fichier(nb1, nb2);

    de mon fichier main.c


    ------------------------------fichier main.c--------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "fichier.h"


    int main()
    {
    double nb1 = 0, nb2 = 0, resultat = 0, condition = 0;

    while (condition > 1 || condition < 1)
    {
    printf("salut mec!\n rentre un nombre\n\n");
    scanf("%lf", &nb1);
    printf("un deuxieme\n\n");
    scanf("%lf", &nb2);
    resultat = fichier(nb1, nb2);
    condition = resultat >= 50;
    }
    printf(" %f est bien superieur à 50 donc OK \n\n", resultat);
    return 0;
    }
    ------------------------------fichier.c--------------------------
    include <stdio.h>
    #include <stdlib.h>

    double fichier(double aaa, double bbb)
    {
    ccc = aaa + bbb;
    return ccc;
    }
    ------------------------------fichier.h--------------------------
    #include <stdio.h>
    #include <stdlib.h>

    double fichier(double aaa, double bbb);


    --------------------------------------------------------------------

    merci de m'aider car je ne comprends vraiment pas l'erreur

    -----

  2. #2
    Coincoin

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Salut,
    Tu en sais déjà beaucoup plus que nous : tu sais si ça compile ou non, ce que ça donne, si ton ordi explose violemment quand tu le lances, ...
    Encore une victoire de Canard !

  3. #3
    QuébecEcho

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Bonjour,
    vous êtes-vous bien assuré que "fichier.c" est bien compilé ?

    Il y a autre chose :
    votre variable "condition" est déclarée comme un double puis vous l'utilisez pour contenir une donnée booléenne lors de l'instruction "condition = resultat >= 50". Ça peut vous attirer des ennuis...

    Logiquement
    André
    Sans la liberté de blâmer, il n'est point d'éloge flatteur. (Beaumarchais)

  4. #4
    erik

    Re : C: je ne comprends pas mon erreur (fichier.h)

    salut,

    Y'a au moins un truc :
    double fichier(double aaa, double bbb);
    dans fichier.h

    quand tu déclares le prototype d'une fonction tu n'as pas à nomer les variables, ton fichier.h devrais contenir double fichier(double , double );

  5. A voir en vidéo sur Futura
  6. #5
    whoami

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Bonjour,
    Citation Envoyé par miketyson42 Voir le message
    Code:
        while (condition > 1 || condition < 1)
    Ton test revient à faire
    Code:
        while (condition != 1)

    Citation Envoyé par erik Voir le message
    salut,

    Y'a au moins un truc :
    dans fichier.h

    quand tu déclares le prototype d'une fonction tu n'as pas à nomer les variables, ton fichier.h devrais contenir double fichier(double , double );
    Rien ne s'oppose à ce qu'on les nomme, et personnellement, je préfère qu'on le fasse.

  7. #6
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par whoami Voir le message
    Rien ne s'oppose à ce qu'on les nomme, et personnellement, je préfère qu'on le fasse.
    Idem. Ca permet au moins de s'y retrouver un peu avec les paramètres (enfin, si on ne les appelle pas aaa et bbb )

    Sinon, il va falloir répondre aux questions de Coincoin parce que "ça ne marche pas", ce n'est pas très explicite.
    En l'occurrence, dans ta fonction:
    double fichier(double aaa, double bbb)
    {
    ccc = aaa + bbb;
    return ccc;
    }
    Tu n'as pas défini de type pour ccc... j'ai peur que ça ne compile pas.

    [EDIT] et un détail: quand on ne maitrise pas le langage, on évite ce genre de choses:
    condition = resultat >= 50;
    Surtout qu'après tu testes si condition est différent de 1... alors que rien n'impose que TRUE soit égal à 1 !
    En C, TRUE, c'est juste "différent de 0" et pas "égal à 1" (même si c'est souvent le cas)
    Dernière modification par invite765732342432 ; 21/07/2009 à 19h17.

  8. #7
    invite2c972667

    Re : C: je ne comprends pas mon erreur (fichier.h)

    int main()
    {

    double nb1 = 0, nb2 = 0, resultat = 0, /*condition = 0 ÇA EST INUTILE*/;


    while (resultat<=50)
    {
    printf("salut mec!\n rentre un nombre\n\n");
    scanf("%lf", &nb1);
    printf("un deuxieme\n\n");
    scanf("%lf", &nb2);
    resultat = fichier(nb1, nb2);
    //condition = resultat >= 50;CA EST INUTILE
    }
    printf(" %f est bien superieur à 50 donc OK \n\n", resultat);
    return 0;
    }


    à mon avis voila ce que tu voulait faire d'après ce que j'ai compris car moi aussi je suis qu'un débutant et j'espère que je ne suis pas entrain d'écrire n'importe quoi!!!!

  9. #8
    invite2c972667

    Re : C: je ne comprends pas mon erreur (fichier.h)

    aussi t'as oublier " # "
    et
    #include"fichier.c" dans main.c

  10. #9
    invite2c972667

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Veuillez cliquer sur une des icônes de « Réponse rapide » dans les messages ci-dessus pour activer la réponse rapide.

  11. #10
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    e nfaite ca ne compile pas mais en lisant vos poste je crois que j'ai trouvé la reponse. je reteste et je vous tiens au courant ,merci

  12. #11
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par QuébecEcho Voir le message
    Bonjour,
    vous êtes-vous bien assuré que "fichier.c" est bien compilé ?

    Il y a autre chose :
    votre variable "condition" est déclarée comme un double puis vous l'utilisez pour contenir une donnée booléenne lors de l'instruction "condition = resultat >= 50". Ça peut vous attirer des ennuis...

    Logiquement
    André
    j'ai modifié et mi en int la variable condition et ca ne change rien

  13. #12
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par whoami Voir le message
    Bonjour,


    Ton test revient à faire
    Code:
        while (condition != 1)


    Rien ne s'oppose à ce qu'on les nomme, et personnellement, je préfère qu'on le fasse.
    en faite je fais cela pour faire des tests, je sais que != revient au meme mais c'est pour prendre l'habitude de faire aussi des ||

  14. #13
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par chardo 20 Voir le message
    int main()
    {

    double nb1 = 0, nb2 = 0, resultat = 0, /*condition = 0 ÇA EST INUTILE*/;


    while (resultat<=50)
    {
    printf("salut mec!\n rentre un nombre\n\n");
    scanf("%lf", &nb1);
    printf("un deuxieme\n\n");
    scanf("%lf", &nb2);
    resultat = fichier(nb1, nb2);
    //condition = resultat >= 50;CA EST INUTILE
    }
    printf(" %f est bien superieur à 50 donc OK \n\n", resultat);
    return 0;
    }


    à mon avis voila ce que tu voulait faire d'après ce que j'ai compris car moi aussi je suis qu'un débutant et j'espère que je ne suis pas entrain d'écrire n'importe quoi!!!!
    en faite chardo j'aimerai que mon programme fonctionne comme cela, car je cherche à tester plusieurs choses, booléens, plusieurs fichiers....

  15. #14
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    VOILA L'ERREUR AFFICHEE PAR LE DEBUGGER:

    - pour la ligne: resultat = fichier(nb1, nb2);
    - il me dit: undefined reference to ' _fichier '

    Si j'enleve cette ligne ca fonctionne mais le while ne peut pas s'arreter car le booléens condition ne passe jamais à 1.

  16. #15
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    nouveaux fichiers prenant en compte vos remarques:

    -----------------------main----------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include "fichier.h"


    int main()
    {
    double nb1 = 0, nb2 = 0, resultat = 0;
    int condition = 0;

    while (condition > 1 || condition < 1)
    {
    printf("salut mec!\n rentre un nombre\n\n");
    scanf("%lf", &nb1);
    printf("un deuxieme\n\n");
    scanf("%lf", &nb2);
    resultat = fichier(nb1, nb2);
    condition = resultat >= 50;
    }
    printf(" %f est bien superieur à 50 donc OK \n\n", resultat);
    return 0;

    }

    ------------------------fichier.c------------------------------
    #include <stdio.h>
    #include <stdlib.h>

    double fichier(double aaa, double bbb)
    {
    double ccc = 0;

    ccc = aaa + bbb;
    return ccc;

    }

    ---------------------------fichier.h--------------------------------
    #include <stdio.h>
    #include <stdlib.h>

    double fichier(double aaa, double bbb);

  17. #16
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    - pour la ligne: resultat = fichier(nb1, nb2);
    - il me dit: undefined reference to ' _fichier '
    Bon, en fait je crois que ce n'est pas le compilateur qui plante, mais le linker: pour vérifier, ton fichier main.o doit être créé.
    S'il existe, alors c'est lors de la création de l'executable qu'il plante car tu ne lui as pas spécifié où trouver "fichier.o"

    Quelle commande utilises-tu pour créer ton exec/compiler ?

  18. #17
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    oups la je suis pas trop, je saiss qu'es ce qu'un linker mais je ne sais pas vriament comment ca marche cette histoire de ficher.o et main.o.

    Il se peut qu'il y ai des erreur lors de leur mise en place? mais c'est le logiciel qui gere cela?

    merci de m'eclairer

  19. #18
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    je ne sais pas vriament comment ca marche cette histoire de ficher.o et main.o.
    C'est important à connaitre, sinon tu risques d'aller dans le mur.
    Jette un oeil là, déjà: http://www.siteduzero.com/tutoriel-3...modulaire.html
    en particulier la section "La compilation séparée"

    Il se peut qu'il y ai des erreur lors de leur mise en place? mais c'est le logiciel qui gere cela?
    Quel logiciel utilises-tu ?

    [EDIT]: tu programmes par toi même, ou bien dans le cadre d'un cours ?

  20. #19
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    je programme par moi meme mais je suis lors de problemes des informations du site zero

  21. #20
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    concernant la page que tu m'as montré je la connais mais je ne connais pas la compilation séparé

  22. #21
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    je me suis mal exprimé, je sais comment ca se passe mais si il y a une erreur je ne sais pas la corrigée

  23. #22
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    je programme par moi meme mais je suis lors de problemes des informations du site zero
    OK.
    Quel logiciel utilises-tu ? (et sous windows ou linux ?)

  24. #23
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    codeblocks sous windows

    (merci pour ton aide)

  25. #24
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    codeblocks sous windows
    Bon, je n'ai jamais utilisé code::blocks... Alors je ne vais pas pouvoir t'aider beaucoup plus...

    Une seule chose: es-tu sûr que tes "fichier.c" et "fichier.h" sont dans le même projet que ton "main.c" ?

  26. #25
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    avant ils n'y etaient pas mais apres les modif j'ai bien vérifié qu'ils y étaient.

    Quand j'ouvre mon projet j'ai fichier.h et .c qui s'ouvre avec le main.c


    merci pour ton aide, tu es sur que l'erreur ne vient pas de mon programme, un petit truc que j'aurais oublié?

  27. #26
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    merci pour ton aide, tu es sur que l'erreur ne vient pas de mon programme, un petit truc que j'aurais oublié?
    Pour vérifier, c'est simple: copie le code de la fonction fichier à la fin de ton main.c et le prototype de ta fonction au début du main.h (vire le include"fichier.h")

    Si ça marche, c'est le problème dont j'ai parlé, sinon.... c'est autre chose

  28. #27
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    oui si je mets le prototype et la fonction dans le main sa fonctionne

  29. #28
    igor51

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Bonsoir,

    Dans ton fichier.c, tu n'inclus pas l'header qui contient la déclaration de ta fonction.

    Essaie de mettre des noms de fonctions plus parlant, ça sera beaucoup plus facile.
    Faire des erreurs est humain. Les mettre sur le dos de l'informatique l'est encore plus.

  30. #29
    invite40f82214

    Re : C: je ne comprends pas mon erreur (fichier.h)

    merci pour votre aide, ca ne marche toujours pas

    Voici mes nouveaux fichiers:

    Code:
    -------------main.c---------------------------------
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "fichier.h"
    
    
    int main()
    {
        double nb1 = 0, nb2 = 0, resultat = 0;
        int condition = 0;
    
    
    
        while (condition > 1 || condition < 1)
    {
        printf("salut mec!\n rentre un nombre\n\n");
        scanf("%lf", &nb1);
        printf("un deuxieme\n\n");
        scanf("%lf", &nb2);
        resultat = addition (nb1, nb2);
        condition = resultat >= 50;
    }
        printf(" %f est bien superieur à 50 donc OK \n\n", resultat);
        return 0;
    
    }
    
    ----------------------fichier.c-----------------------------
    #include <stdio.h>
    #include <stdlib.h>
    #include "fichier.h"
    
    double addition (double aaa, double bbb)
    {
        double ccc = 0;
    
        ccc = aaa + bbb;
        return ccc;
    
    }
    
    ---------------------------------fichier.h---------------------
    #include <stdio.h>
    #include <stdlib.h>
    
    
    double addition (double aaa, double bbb);

    merci de votre aide
    Dernière modification par yoda1234 ; 03/08/2009 à 10h02.

  31. #30
    invite765732342432
    Invité

    Re : C: je ne comprends pas mon erreur (fichier.h)

    Citation Envoyé par miketyson42 Voir le message
    oui si je mets le prototype et la fonction dans le main sa fonctionne
    Bon, et bien tu sais quel est le problème: lorsque ton logiciel crée l'exécutable, il ne prend pas en compte le fichier "fichier.c".

    Il va falloir travailler sur la configuration du logiciel, le code, à ce niveau, n'est plus en cause.

    Citation Envoyé par igor51 Voir le message
    Dans ton fichier.c, tu n'inclus pas l'header qui contient la déclaration de ta fonction.
    Dans le cas présent, c'est sans importance

    Essaie de mettre des noms de fonctions plus parlant, ça sera beaucoup plus facile.
    Ca par contre, effectivmeent c'est important

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. [Zoologie] Je ne comprends pas mon cours!
    Par invite71a363cc dans le forum Biologie
    Réponses: 0
    Dernier message: 27/05/2009, 22h36
  2. Je comprends pas mon erreur peut etre que quelqu'un peut m'aider
    Par jerem66 dans le forum Mathématiques du collège et du lycée
    Réponses: 23
    Dernier message: 24/01/2008, 19h38
  3. Je comprends pas un truc dans mon exo de chimie TERMINALE S
    Par invite13d2b736 dans le forum Chimie
    Réponses: 7
    Dernier message: 24/06/2007, 14h30
  4. je ne comprends pas mon échec
    Par chwebij dans le forum Orientation après le BAC
    Réponses: 11
    Dernier message: 27/07/2006, 16h14
  5. Mon ampli NAD gresille...je comprends pas.
    Par invitead1b7429 dans le forum Dépannage
    Réponses: 7
    Dernier message: 03/07/2006, 22h27
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...