Exercice sur les structures en c

ndolais Messages postés 1 Statut Membre -  
 Utilisateur anonyme -
s'il vous plais je ne sait pas comment ecrire une fonction qui prend en entré une structures.

2 réponses

  1. sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   50
     
    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 );
    }
    
    

    1
  2. Utilisateur anonyme
     
    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