Bonsoir à tous,
Je créé ce sujet car je suis bloqué sur une fonction que je dois réaliser et je n'arrive vraiment pas à y parvenir malgré tout mon acharnement, mes recherches... Je commence sérieusement à désespérer.
Donc je dispose de la structure suivante:
Donc déjà ce qui me gène énormément est ce fameux ***records.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /** table dynamique de personne */ typedef struct { /**Le nombre de personne dans la table*/ int recordCount; /**Les données des personnes. Tableau 2d de strings. * Note: records[Idpersonne][0] est le nom de la Idpersonne ème personne * Note: records[Idpersonne][1] est le mot de passe de la Idpersonne ème personne */ char *** records; } PersonneTable;
Mon cours explique ce q'est un pointeur mais ne rentre pas dans les détails.
Je dois écrire une fonction qui permet d'insérer le nom d'une personne et son mot de passe si elle n'est pas déjà dans la liste ou qui modifie le mot de passe d'une personne déjà présent dans la liste.
La fonction retourne la position de la personne dans la table.Le premier commence à 0.
Voici la fonction que j'ai faite: (Les paramètres de la fonctions sont imposés)
La fonction dupliquer(char * string) alloue sur le tas et retourne une copie de la chaine en paramètre.
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 int (PersonneTable_setPersonne)(PersonneTable * table, const char * name, const char * password) { if(PersonneTable_findPersonne(table, name) == -1) { table->records[table->recordCount][0] = dupliquer(name);/** C'est cette ligne qui ne fonctionne pas et que je n'arrive pas à résoudre. Idem la ligne du dessous.**/ table->records[table->recordCount][1] = dupliquer(password); table->recordCount = table->recordCount + 1; return table->recordCount; } else //Pour l'instant ce code n'a jamais pu etre testé mais le problème est le même { table->records[PersonneTable_findPersonne(table, name)][1] = dupliquer(password); table->recordCount = table->recordCount +1; return PersonneTable_findPersonne(table, name); } }
La fonction PersonneTable_findPersonne(table, name) retourne -1 si la personne n'a pas été trouvé, sinon son indice.
Donc vu qu'au début table est vide on entre directement dans le if.
Si quelqu'un pouvait m'aider ce serait vraiment super!
Partager