Bonsoir tout le monde !
Je travaille actuellement sur un projet dans lequel je dois gérer un parc de ressources physiques, et le prêt de celles-ci entre différents utilisateurs. J'ai donc créé plusieurs fonctions qui permettent de créer un utilisateur, de créer des ressources, etc., mais je ne vous publie pas tout mon code car il y a plus de 1000 lignes.

Je me retrouve confrontée à un problème auquel je ne trouve pas de solution. En effet, si vous lisez mon code, vous verrez qu'il y a un problème au niveau de la fonction recuperer_info_user() dans personne.c. Je souhaiterais que cette fonction récupère les informations d'un utilisateur dans le fichier json associé, et donc le numéro (et seulement le numéro) des ressources que possède cet utilisateur. Cependant voilà, je fais pour cela appel à la fonction set_ressource() dans ressource.c, qui a en paramètres le numéro, le nom, le type de la ressource et enfin l'emprunt. Mon soucis est que j'aimerais que seul le numéro de la ressource soit visible, mais je ne sais pas vraiment comment m'y prendre en sachant que je fais appel à la fonction set_ressource() et que je suis donc obligée de lui donner 4 paramètres. Toute aide est donc la bienvenue !


personne.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
typedef struct user_info_s{
	char num[20];                   // numéro (unique) de l'utilisateur dans le fichier
	int admin;                      // si ce compte possède les droits administateurs
	char ID[50];                    // identifiant de l'utilisateur (pour se connecter)
	char nom[30];                   // prénom de l'utilisateur
	char prenom[30];                // nom de l'utilisateur
	char mdp[50];                   // mot de passe de l'utilisateur (pour se connecter)
	char mail[60];                  // adresse mail de l'utilisateur
	char tel[10];                   // numéro de téléphone de l'utilisateur
    char adresse[60];               // adresse de l'utilisateur
	char cp[5];                     // code postal de l'utilisateur
	char ville[40];                 // ville de l'utilisateur
	struct ressource_s* premier;    // première ressource de l'utilisateur
}user;    
 
User recuperer_info_user(char * file){  // Pour récupérer les infos d'un utilisateur dans le fichier associé
	Ressource rsc = NULL;
    Ressource premier = NULL;
    User user = NULL;
    user = (User)malloc(sizeof(struct user_info_s)); 
 
    JSON_Value *root_value;
    JSON_Object *root_object;
    char t[32];
    JSON_Array *liste;
 
    root_value = json_parse_file(file);
    root_object = json_value_get_object(root_value);
 
	user = set_user((char*)json_object_dotget_string(root_object, "Personne.num"), 
	(int)json_object_dotget_number(root_object, "Personne.admin"),
	(char*)json_object_dotget_string(root_object,"Personne.ID"),
    (char*)json_object_dotget_string(root_object, "Personne.nom"),
    (char*)json_object_dotget_string(root_object, "Personne.prenom"),
    (char*)json_object_dotget_string(root_object, "Personne.mdp"),
	(char*)json_object_dotget_string(root_object, "Personne.mail"),
    (char*)json_object_dotget_string(root_object, "Personne.telephone"),
    (char*)json_object_dotget_string(root_object, "Personne.adresse"),
    (char*)json_object_dotget_string(root_object, "Personne.codepostal"),
    (char*)json_object_dotget_string(root_object, "Personne.ville"));
 
    liste = json_value_get_array(json_object_dotget_value(root_object, "Personne.liste_Ressource"));
 
   	for (int i = 0; i < json_array_get_count(liste); i++) {
        strcpy(t, json_array_get_string(liste, i));    
        if(i == 0)
            premier = set_ressource(t);
        else{
            rsc = set_ressource(t);        
            ajouter_ressource(premier, rsc);
        }
    }
 
    if(premier != NULL){
        set_premiere_ressource(user, premier);
    }
 
	json_value_free(root_value);
    return user;
}

ressource.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
typedef struct ressource_s{
	char *num;                     // numéro (unique) de la ressource dans le fichier
	char *nom_ressource;		   // nom de la ressource (ex : "CD de Céline Dion", "jeu Animal Crossing : New Horizons", etc.)
	char *type_ressource;          // type de la ressource (CD, livre, PC, outil, etc.)
	int emprunt;				   // 0 si la ressource est libre, 1 si elle est empruntée
	struct ressource_s* suivant;   // ressource suivante
}ressource;
 
Ressource set_ressource(char *num, char *nom_ressource, char *type_ressource, int emprunt){  // Définit une ressource à partir de son numéro (unique)
	Ressource re = NULL;
	re = (Ressource)malloc(sizeof(struct ressource_s));
	set_num_ressource(re, num);
	set_nom_ressource(re, nom_ressource);
	set_type_ressource(re, type_ressource);
	set_emprunt_ressource(re, emprunt);
	re->suivant = NULL;
	return (re);
}