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 :

return makes integer from pointer without a cast


Sujet :

C

  1. #21
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    merci diogene je test

    edit: plus de warning, mais erreur de segmentation a l'execution, pas de sequence affichée..

    merci a tous pour votre aide c'est vraiment cool

  2. #22
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    plus de warning, mais erreur de segmentation a l'execution, pas de sequence affichée..

    merci a tous pour votre aide c'est vraiment cool
    c'est vraiment cool ???? erreur de segmentation !!!! vraiment tu es facile à satisfaire
    Il faudrait voir le code en l'état où il est actuellement pour faire le point

  3. #23
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 39
    Points
    39
    Par défaut
    Tu transmets à ta fonction l'adresse du tableau arn.
    Dans ta fonction, le contenu du tableau est mis à jour.
    Ce que tu renvoies est l'adresse du tableau arn (qui n'a pas changé dans ta fonction que tu aies modifié ou non le tableau).

    Même si l'adresse n'a pas changé, les valeurs du tableau, elles, ont bien été modifiées et tu peux les exploiter avec la valeur de arn déclarée dans la fonction main.

    Pour l'explication du 21, il faut savoir qu'en C, la chaîne littérale :
    est équivalente au tableau de caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { 'G', 'A', 'A', ... , 'A', 'T', 'T', '\0' }
    Le compilateur rajoute toujours un caractère nul en fin de chaîne, donc la longueur réellement occupée par la chaîne est toujours supérieure de 1 à la longueur réellement affichée.

  4. #24
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    merci corentor, tes explications assurent
    je vais essayer de me depatouiller avec tout ca!

  5. #25
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    ca y j ai ca marche, merci infiniment, mon erreur de segmentation c'etait à cause de "%c\n%c\n" au lieu de "%s\n%s\n"
    corentor, j ai enlevé le return
    encore merci

  6. #26
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 38
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Corentor
    Citation Envoyé par diogene
    Retourner arn n'est pas forcément une mauvaise idée puisqu'elle permet ce type d'écriture à un coût minime

    Code :
    printf("%s\n%s\n", seq, adn2arn(seq, arn, lSeq));
    Je suis d'accord sur ce point.
    La valeur de retour a un côté pratique pour l'appel depuis des fonctions.
    Je modère quand même ce que j'ai dit. Le type d'écriture ci-dessus peut être dangereux, s'il est mal maîtrisé. On ne teste pas la valeur de retour de la fonction avant de l'utiliser, et la conception d'une fonction ne devrait pas encourager cela. Que va-t-il se passer la séquence d'adn en entrée contient des bases inattendues (autres que A, T, G, C) par exemple (dans le cas présent, je reconnais que c'est sans objet puisque la fonction ne gère de toute façon pas les erreurs et laisse les bases invalides telles quelles). On pourrait envisager de renvoyer un pointeur NULL, ou de mettre le premier caractère du tableau arn à '\0' (chaîne vide).

    Dans ce cas, il est nécessaire de tester la sortie de la fonction avant de l'utiliser dans un appel (soit la valeur de retour, soit le contenu du tableau de sortie arn), et on perd le bénéfice de l'écriture condensée ci-dessus.

    Attention, je n'affirme pas qu'il faut éviter à tout prix ce type de conception, mais le bénéfice d'une écriture condensée ne devrait jamais être l'argument d'un choix de conception.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2014, 00h29
  2. assignment makes integer from pointer without a cast
    Par MaybeMaybe dans le forum Débuter
    Réponses: 6
    Dernier message: 05/01/2014, 20h50
  3. Réponses: 2
    Dernier message: 02/04/2010, 12h44
  4. Réponses: 3
    Dernier message: 19/03/2009, 10h56
  5. Probleme de pointer without of cast
    Par CyberTwister dans le forum Windows
    Réponses: 5
    Dernier message: 06/04/2007, 13h45

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