Exercice sur les structures en c

Fermé
ndolais Messages postés 1 Date d'inscription samedi 26 juillet 2014 Statut Membre Dernière intervention 26 juillet 2014 - 26 juil. 2014 à 23:20
 Utilisateur anonyme - 27 juil. 2014 à 12:21
s'il vous plais je ne sait pas comment ecrire une fonction qui prend en entré une structures.

2 réponses

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
27 juil. 2014 à 10:08
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
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