Exercice sur les structures en c

s'il vous plais je ne sait pas comment ecrire une fonction qui prend en entré une structures.

2 réponses

  1. ecrire une fonction qui prend en entré une structures.

    Pas en entrée, mais en paramètre, non ?

    Si on prend à la lettre la question, il n'est pas question d'adresse d'une structure

    Au cas où voici une possibilité par copie

    #include <stdio.h>
    
    struct s_Struct{
     int valeur;
    };
    
    struct s_Struct f_AddValeur_A(struct s_Struct pIn, int val);
    
    int main(void)
    {
        struct s_Struct s_1;
    
        s_1.valeur = 10;
    
        s_1 = f_AddValeur_A(s_1, 2);
    
        printf("%d\n", s_1.valeur); /* 12 */
    
        return 0;
    }
    
    struct s_Struct f_AddValeur_A(struct s_Struct pIn, int val)
    {
    
        struct s_Struct s;
        s.valeur = pIn.valeur + val;
        return s;
    }


    La solution proposée précédemment est meilleure, mais faut savoir que celle-ci existe aussi.
    1. Bonjour,
      Voici quelque exemple pour t'aidé à comprendre,
      pour les experts corrigé moi si je me trompe
      à bientôt

      #include <stdio.h>
      
      /***
      * Structure 
      ***/
      struct s_Struct{
      	int valeur;
      };
      
      /***
      *	 Autres types de structure 
      ***/
      typedef struct{
      	int valeur;
      }ts_Struct;
      
      /***
      * Fonction d'ajout des valeurs
      ***/
      void f_AddValeur_A(struct s_Struct *pIn, int val){
      	pIn->valeur = val;
      }
      
      void f_AddValeur_B(ts_Struct *pIn, int val){
      	pIn->valeur = val;
      }
      
      /***
      *	Programme principale
      ***/
      int main( void ) {
      	
      	struct s_Struct s_1;
      	ts_Struct s_2;
      	
      	/*	Premier cas d'affectation */
      	s_1.valeur = 10;
      	s_2.valeur = 20;
      	
      	printf("s_1 = %d\n",s_1.valeur);
      	printf("s_2 = %d\n",s_2.valeur);
      	
      	/* Deuxième cas indirections */
      	(&s_1)->valeur = 30;
      	(&s_2)->valeur = 40;
      	
      	printf("&s_1 = %d\n",(&s_1)->valeur);
      	printf("&s_2 = %d\n",(&s_2)->valeur);
      	
      	/* Avec fonction */
      	f_AddValeur_A(&s_1, 50);
      	f_AddValeur_B(&s_2, 60);
      	
      	printf("*s_1 = %d\n",(&s_1)->valeur);
      	printf("*s_1 = %d\n",(&s_2)->valeur);
      	
      	return ( 0 );
      }