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 :

bug lors du passage d'un tableau à une fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable technique
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut bug lors du passage d'un tableau à une fonction
    Bonjour,

    Mon Main appelle une fonction en lui passant l'adresse d'un tableau de 4 doubles. Cette fonction doit renseigner ce tableau.

    Aucune erreur de compilation n'y même d'alerte.

    Mon programme fonctionne mais de temps à autre mon Main relit des valeurs erronées dans une case du tableau. En fait cette valeur erronée correspond à une valeur qui doit être normalement écrite dans une autre case.

    Cela fait un moment que je cherche ce qui se passe mais je bloque.

    A ce jour je suis sûr que ma fonction écrit bien les données au bon endroit donc je mets en doute le passage de paramètre et demande l'aide d'un regard extérieur.

    Main()
    {
    double ReadingPeakSearchParam [4];


    Appel de ma function : les valeurs txtResultat, MAXVALUE, ReadingPeakSearchParam ont été initialisé auparavant.
    Peak_Search_Reading (txtResultat, MAXVALUE, ReadingPeakSearchParam)
    En suite mon Main lit la quatrième case de ReadingPeakSearchParam et sporadiquement y trouve la valeur de la troisième case !
    Par contre le logiciel ne plante pas, simplement je reçois une valeur que je ne devrais pas.

    }

    Int Peak_Search_Reading (char *txtResultat, int Mode, double Parameters[4])
    {
    Mon code utilise Mode et 2 premières cases de "Parameters" pour régler un appareil de mesure et là cela fonctionne tout le temps.
    Puis renseigne les deux dernières.

    }

    Est ce que je fais une erreur :
    De déclaration.
    D'écriture.
    Ou autre ?



    Merci.
    Pat

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Apparemment, il n'y a pas d'erreur lors de la définition de la fonction ni lors de l'appel.
    Peak_Search_Reading() est-elle définie ou déclarée par un prototype avant le main ?

    Il faudrait plus de détails sur le code pour dire quelque chose de pertinent.

    PS : le 4 dans la déclaration des paramètres de la fonction (double Parameters[4]) est inutile et ignoré par le compilateur. Ce paramètre peut prendre aussi comme forme double *Parameters ou double Parameters[]

  3. #3
    Membre averti
    Homme Profil pro
    Responsable technique
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut
    Ma fonction, je ne la déclare pas car elle est dans le même fichier C et avant mon main.
    Normalement j'ai le droit de faire cela mais peu être est il plus sûr de la déclarer ?


    Pat

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Non, sa définition sert de prototype.

    Il faut chercher ailleurs et pour cela, il faut le code.

  5. #5
    Membre averti
    Homme Profil pro
    Responsable technique
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut
    Ci joint le .C et le .H

    Tu vas sûrement voir des horreurs, désolé j'apprends seul !
    Je sais ça n'excuse pas.

    Le main est :
    extern int ExecuteAction_Analyseur_de_spectre (char *txtResultat, T_ETAPE *etape)
    Dans lequel je fais appel à :
    int Peak_Search_Reading(char *txtResultat, int Mode, double Parametres[4])


    Merci.
    Pat

Discussions similaires

  1. Passage d'un tableau à une fonction
    Par futneguet dans le forum C++Builder
    Réponses: 19
    Dernier message: 24/03/2010, 14h49
  2. Réponses: 11
    Dernier message: 09/08/2007, 14h27
  3. Réponses: 11
    Dernier message: 27/06/2007, 15h06
  4. Passage de tableau à une fonction par pointeur
    Par progfou dans le forum C++
    Réponses: 15
    Dernier message: 23/02/2007, 11h45
  5. Réponses: 8
    Dernier message: 10/03/2006, 17h28

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