la sortie d'une fonction soit un paramétre d'entrèe de la même fonction
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

la sortie d'une fonction soit un paramétre d'entrèe de la même fonction



  1. #1
    neocol

    la sortie d'une fonction soit un paramétre d'entrèe de la même fonction


    ------

    Bonjour,
    Je voudrais avoir votre aide, sur un truc que j'arrive pas moi aussi à saisir, si çà existe déjà ou non.

    * J'ai une fonction Copier qui retourn un Char* chaine :
    char* COPIER(char* bloc, int pas1, int pas2);
    - Je copie tous les caractères entre un pas1 et pas2 ( pas1 et pas2 désignons le numero des espaces: bloc = AAA_pas1_BBB CCC_pas2_DDD EEE [ici je vais copier BBB CCC]).
    - bloc est une chaine de caractères, les mots de dans sont séparés par des espaces.
    * Dans le main : pour récuperer le résultat de la fonction copier,
    je fais, exemple : char* chaine = char* COPIER(char* bloc, int pas1, int pas2);

    Ce que je veux , est-ce qu'il y a u une possibilté pour que le retour de la fonction copier soit parmi les paramétres d'entrées de la fonction? je m'explique
    au lieu de faire :
    ++ char* chaine = char* COPIER(char* bloc, int pas1, int pas2);
    j'aurais un truc comme :
    ++ COPIER(char* bloc, int pas1, int pas2, char* chaine);
    c-à-d le résultat va être directement stocké dans chaine,
    et sa veut dire dans le main , je directement écrire :
    COPIER(char* bloc, int pas1, int pas2, char* chaine);

    Même si j'ai pensé à définir la fonction comme étant un int COPIER(char* bloc, int pas1, int pas2, char* chaine);
    je reçois toujrs une segmentation fault.(Code Blocks)

    J'en ai besoin pour mon travail.Merci

    -----

  2. #2
    lou_ibmix_xi

    Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    La fonction "strncpy" est là pour ça.
    Remarque (à ne pas prendre mal): je soupçonne de grosses lacunes en C concernant la visibilité des variables locales, l'allocation dynamique et autre joyeusetés... Car dans l'implémentation actuelle de ta fonction "copier", dans où est copié effectivement le bout de la chaîne de caractères?

  3. #3
    Jack
    Modérateur

    Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    COPIER(char* bloc, int pas1, int pas2, char* chaine);
    Je suppose qu'il s'agit de langage C (ou C++ ??).

    chaine pointe-t-il sur une zone mémoire initialisée (tableau, malloc ou new)? Si ce n'est pas le cas, c'est normal de te taper une faute de segmentation.

    A+

  4. #4
    neocol

    Smile Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    Bonjour,
    J'ai résolu mon probléme, et çà marche nikel, je vous laisse cet exemple démonstratif :
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void intChange(int* a)
    {
      *a = 14;
    }
    
    void strChange(char** str)
    {
      free(*str);
      *str = malloc(6 * sizeof (char));
      strcpy(*str, "hello");
    }
    
    int main()
    {
      int nb = 5;
      char* str = NULL;
    
      printf("Avant: %i\n", nb);
      intChange(&nb);
      printf("Après: %i\n", nb);
    
      str = malloc(7 * sizeof (char));
      strcpy(str, "coucou");
      printf("Avant: %s\n", str);
      strChange(&str);
      printf("Après: %s\n", str);
      free(str);
    
      return 0;
    }
    ce code marche nikel.
    Ce que je voulais, c'était dans le main, ma fonction marche très bien,
    Au lieu d'écrire , exemple : int C = Somme(int a, int b);

    je veux directement écrire : somme(int a, int b, C); ç-à-d je veux que le résultat de la fonction somme soit directement stocké dans C .

    Voilà, désolé si j'étais pas bien exprimé.
    Merci pour votre aide.
    Cordialement.
    Youness MOURTAJI
    Dernière modification par JPL ; 04/06/2013 à 22h38. Motif: Ajout de la balise Code (#) pour garder l'indentation

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

    Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    Pour cela ton prototype ressemblera fortement à

    Code:
    void somme(int a, int b, int *c);

  7. #6
    whoami

    Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    Bonjour,
    Citation Envoyé par neocol Voir le message
    Ce que je voulais, c'était dans le main, ma fonction marche très bien,
    Au lieu d'écrire , exemple : int C = Somme(int a, int b);

    je veux directement écrire : somme(int a, int b, C); ç-à-d je veux que le résultat de la fonction somme soit directement stocké dans C .
    Par rapport à une programmation "propre", ce n'est pas une bonne idée.

  8. #7
    bisou10

    Re : la sortie d'une fonction soit un paramétre d'entrèe de la même fonction

    disons que ca se fait trés bien, en général le code de retour est le succès ou l'échec de la fonction, mais en prototype ce sera
    int somme (int a, int b, int *c);

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2011, 09h44
  2. la fonction logique d'une sortie
    Par No1 dans le forum Électronique
    Réponses: 4
    Dernier message: 17/11/2010, 19h17
  3. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par inviteac36b108 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 07h16
  4. Déterminer quel est la courbe d'une fonction paramétrique suivant son paramètre.
    Par neokiller007 dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 13/03/2009, 14h10
  5. maximum d'une fonction ac paramètre
    Par invitec257ecd4 dans le forum Mathématiques du collège et du lycée
    Réponses: 13
    Dernier message: 15/05/2006, 12h17